吴裕雄--天生自然HADOOP学习笔记:基本环境配置

时间:2023-03-09 01:25:32
吴裕雄--天生自然HADOOP学习笔记:基本环境配置

实验目的

学习安装Java

学习配置环境变量

学习设置免密码登陆的方法

掌握Linux环境下时间同步的配置

实验原理

1.Java的安装
  java是大数据的黄金语言,这和java跨平台的特性是密不可分的,大数据的大部分框架,包括hadoop、hbase、tachyon等,都是用java实现,而spark框架的scala语言,也是基于java的虚拟机的,所以安装java是进行大数据处理的第一步。
  java的安装很简单,我们采用编译安装的方法安装。找到jdk的安装包,实验安装包在文档末,同学们可以参考,使用命令"tar zxvf jdk-*.tar.gz -C /home/hadoop/tmp/soft/*"进行安装,由于我们的环境java可能已经安装好了,放在/home/hadoop/tmp/soft/jdk-*下面,所以这一步可以省略。

2.配置环境变量
  配置环境变量就是在整个运行环境都可以使用的变量,而路径添加到PATH类似于在windows平台下将程序添加到注册表,添加某个路径到PATH环境变量后,执行该路径下的文件就不需要输入完整的命令路径而只需要输入命令的文件名。例如,jdk的安装目录为/usr/home/jdk/,那么要查看java的版本,需要输入"/usr/home/jdk/bin/java -version",但是如果将/usr/home/jdk/bin/配置到PATH下,就只需要直接输入"java -version"。所以如果我们经常需要运行的命令,比如hadoop、hive、hbase、spark等,我们可以将他们的路径放在PATH里面,运行方便。
  对于添加给所有用户的环境变量,直接编辑: "/etc/bashrc"或者"/etc/profile",对于添加给某一个用户的环境变量,可以编辑用户home目录下的:" ~/.bashrc "或者"~/.bash_profile"。具体如下:
  编辑 "~/.bashrc"或"~/.bash_profile"在对应的文件添加一行内容:"export 变量名=变量值"就可以,同一个环境变量的多个值用冒号":"隔开,例如我们配置java的环境变量,需要使用"export JAVA_HOME=/usr/home/jdk","export PATH=$JAVA_HOME/bin:$PATH",第一个配置java的安装目录,第二个在原PATH的基础上加上一个java的bin目录。编辑完成后,使用" source 文件名"使环境变量生效。例如:"source .bash_profile"。

3.设置免密码登陆
  我们使用ssh登录的方式有两种,第一是使用密码登录,第二种是配置公钥,分布式的应用,节点之间通信频繁,不可能每次都输入密码,所以需要配置免密码登录。假设有两台节点node6、node7,现在要配置用户root从node6免密码登录到node7,首先需要在node6上生成root的公钥,然后将生成的公钥文件的内容添加到node7的认证文件,这样以后每次使用root从node6,登录到node7的时候,就不需要输入密码了。具体操作如下:

修改映射文件:vi /etc/hosts

生成node6的公钥,使用root登录node6,生成公钥命令为"ssh-keygen -t rsa",输入命令后程序会提示输入路径,直接按enter设置默认的路径。

将生成的公钥复制到node7,生成的公钥文件为"~/.ssh/id_rsa.pub",直接输入"ssh-copy-id node7",这个命令将会把公钥文件放在node7的/root/.ssh目录下,执行完后会让你输入root用户的密码,直接输入后按enter,拷贝完成

检验。在node6上,输入"ssh node7",如果不需要输入密码表明成功,成功后需要输入"exit"退出登录。

4.配置时间同步
  由于分布式的节点通信有心跳机制等需要操作系统时间,我们必须保证每个节点的时间一致,配置的方法是首先安装时间同步服务,启动同步服务,然后添加到定时任务里。
   (1)安装时间同步服务并启动。我们使用yum安装,当然也可以使用其他的安装方式,yum命令为:"yum install -y ntp",安装好后,需要启动,启动命令分为临时启动和每次开机启动。命令为:"service ntpd start"和"chkconfig ntpd on",后者需要是root用户,或者有sudo权限,所以可能失败,不过没关系。
  (2)添加到定时任务列表。linux自带了添加定时任务服务,编辑定时任务比windows略复杂一点。可以添加和不能添加定时任务的用户分写在"/etc/cron.allow"和"/etc/cron.deny"中,更多关于定时任务的资料大家自行查阅资料,添加定时任务使用"crontab -e"命令,编辑方式类似vim命令,每一行的格式为: "minute hour day month week command(命令)",代表的是在这个时间点执行这个命令,我们可以使用*、/、-、,等符号,其中星号(*)代表所有可能的值,逗号(,)代表多个值,中杠(-)代表一个范围,正斜线(/)代表每隔多久。例如"10 6 * * * date "代表每天早上六点十分执行date命令;"0 */2 * * * date "代表每隔两个小时执行一次date命令。
  (3)设置自动时间同步。同步时间的命令为"ntpdate 时间服务器",其中时间服务器可以在网上查询,我们这里使用time.nist.gov,执行"ntpdate time.nist.gov",会同步时间,我们需要每隔十分钟执行一次,所以先输入:"crontab -e",然后读入"*/10 * * * * /usr/sbin/ntpdate time.nist.gov | logger -t NTP",代表每隔十分钟同步一次,并把日志放进用户邮箱。

实验环境

1.操作系统
  操作机1:Linux_Centos
  操作机2:Linux_Centos
  操作机3:Windows_7
  操作机1默认用户名:root,密码:123456
  操作机2默认用户名:root,密码:123456
  操作机3默认用户名:hongya,密码:123456

2.Crontab
  Crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行。crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。
  注:crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。

  使用权限:
  root用户和crontab文件的所有者

  语法:
  crontab \[\-e \[UserName\]\|\-l \[UserName\]\|\-r \[UserName\]\|\-v \[UserName\]\|File \]

  参数:

-e [UserName]: 执行文字编辑器来设定时程表,内定的文字编辑器是vi

-r [UserName]: 删除目前的时程表

-l [UserName]: 列出目前的时程表

-v [UserName]:列出用户cron作业的状态

  crontab文件的含义:
  用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute   hour   day   month   week   command

其中:

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

吴裕雄--天生自然HADOOP学习笔记:基本环境配置

在以上各个字段中,还可以使用以下特殊字符:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

查看实验步骤

步骤1:使用xshell工具连接两台节点

  1.1输入相应的用户名和密码进入操作机3(win_7),点击xshell工具,点击新建,输入名称为:node6,主机输入操作机1的IP(示例IP:90.10.10.19)。

吴裕雄--天生自然HADOOP学习笔记:基本环境配置

图1

  1.2点击“用户身份验证”,然后输入操作机1的用户名和密码,点击“确定”。

吴裕雄--天生自然HADOOP学习笔记:基本环境配置

图2

  1.3会话建立成功,相同方法建立操作机2的会话,名称为node7。然后选中node6,点击“连接”。见下图:

吴裕雄--天生自然HADOOP学习笔记:基本环境配置

图3

  1.4最后两个节点node6,node7都连接成功。见下图:

吴裕雄--天生自然HADOOP学习笔记:基本环境配置

图4

步骤2:安装配置环境变量(两台节点都要执行)

  2.1安装java的方法不再描述,配置环境变量,我们配置的是自己用户的环境变量"~/.bash_profile"。

命令:vim ~/.bash_profile

  添加内容为:

配置java的安装目录:export JAVA_HOME=/home/hadoop/soft/jdk1.8.0_121

在原PATH的基础上加上一个java的bin目录:export JAVA_BIN=/home/hadoop/soft/jdk1.8.0_121/bin

吴裕雄--天生自然HADOOP学习笔记:基本环境配置

图5

  2.2修改完成后,保存退出。上图为node6中的修改,node7中也要进行同样修改,这里就不演示。同学们自行修改。

步骤3:设置免密码登陆

  3.1现在有两台节点,主机名为node6,node7,用户名为:root,需要设置node6到自己的免密码登陆,node6到node7的免密码登陆。首先进行编辑hosts文件。

命令:vi /etc/hosts

  添加映射(hosts中原有映射可以删除,实验中用不到):

90.10.10.19  node6

90.10.10.16  node7

  添加完毕后,按“Esc”键退出编辑模式,再输入“wq”保存退出。

吴裕雄--天生自然HADOOP学习笔记:基本环境配置

图6

  3.2在node6 上生成公钥。

命令:ssh-keygen -t rsa

  然后按几次“Enter”键。

吴裕雄--天生自然HADOOP学习笔记:基本环境配置

图7

  3.3将公钥写入node6和node7的认证文件。

命令:ssh-copy-id node6

命令:ssh-copy-id node7

  注意:这两个命令都需要输入对应的root用户的密码:123456

吴裕雄--天生自然HADOOP学习笔记:基本环境配置

图8

  3.4检查是否能够免密码登陆,检查方法就是直接连上,然后退出。node6上输入:

命令:ssh node6

命令:exit

命令:ssh node7

命令:exit

吴裕雄--天生自然HADOOP学习笔记:基本环境配置

图9

步骤4:配置时间同步

  4.1安装时间服务。

命令:yum install -y ntp

吴裕雄--天生自然HADOOP学习笔记:基本环境配置

图10

  4.2首先查看crontab用法。

命令:crontab --help

-e:编辑添加定时任务

-l:列出所有的定时任务

-r:删除用户的定时任务

-i:删除定时任务前进行提示

吴裕雄--天生自然HADOOP学习笔记:基本环境配置

图11

  4.3添加定时任务。

命令:crontab -e

编辑内容(每隔十分钟更新一次):*/10 * * * * /usr/sbin/ntpdate time.nist.gov | logger -t NTP

吴裕雄--天生自然HADOOP学习笔记:基本环境配置

图12

  4.3查看任务列表。

命令:crontab -l

吴裕雄--天生自然HADOOP学习笔记:基本环境配置

图13