以下操作步骤需要在HadoopMaster和HadoopSlave节点上分别完整操作,都使用root用户,从当前用户切换root用户的命令如下:
[lan@master ~]$ su root
输入密码:lan
本节所有的命令操作都在终端环境,打开终端的过程如下图的Terminal菜单:
终端打开后如下图中命令行窗口所示。
3.2.1配置时钟同步
1、配置自动时钟同步
该项同时需要在HadoopSlave节点配置。
使用Linux命令配置
[root@master ~]$ crontab -e
该命令是vi编辑命令,按i进入插入模式,按Esc,然后键入:wq保存退出
键入下面的一行代码,输入i,进入插入模式(星号之间和前后都有空格)
0 1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
2、手动同步时间
直接在Terminal运行下面的命令:
[root@master ~]$ /usr/sbin/ntpdate cn.pool.ntp.org
3.2.2配置主机名
1、HadoopMaster节点
使用gedit编辑主机名,如果不可以使用gedit,请直接使用vi编辑器(后面用到gedit的地方也同此处处理一致)。
[root@master ~]# vim /etc/sysconfig/network
配置信息如下,如果已经存在则不修改,将HadoopMaster节点的主机名改为master,即下面代码的第2行所示。
NETWORKING=yes #启动网络
HOSTNAME=master #主机名
确实修改生效命令:
[root@master ~]# hostname master
检测主机名是否修改成功命令如下,在操作之前需要关闭当前终端,重新打开一个终端:
[root@master ~]# hostname
执行完命令,会看到下图的打印输输出:
2、HadoopSl使用gedit编辑主机名:
[root@master ~]# vim /etc/sysconfig/network
配置信息如下,如果已经存在则不修改,将Hadoopslave节点的主机名改为slave,即下面代码的第2行所示。
NETWORKING=yes #启动网络
HOSTNAME=slave #主机名
确实修改生效命令:
[root@master ~]# hostname slave
检测主机名是否修改成功命令如下,在操作之前需要关闭当前终端,重新打开一个终端:
[root@master ~]# hostname
执行完命令,会看到下图的打印输输出
3.2.3使用setup 命令配置网络环境
该项也需要在HadoopSlave节点配置。
在终端中执行下面的命令:
[root@master ~]# ifconfig
如果看到下面的打印输出
如果看到出现红线标注部分出现,即存在内网IP、广播地址、子网掩码,说明该节点不需要配置网络,否则进行下面的步骤。
在终端中执行下面命令:
[root@master ~]# setup
会出现下图中的内容:
使用光标键移动选择“Network configuration”,回车进入该项
使用光标键移动选择eth0,回车进入该项
按照图中的方式输入各项内容
重启网络服务
[root@master ~]# /sbin/service network restart
检查是否修改成功:
[root@master ~]# ifconfig
看到如下图的内容(IP不一定和下图相同,根据你之前的配置),说明配置成功,特别关注红线部分
3.2.4关闭防火墙
该项也需要在HadoopSlave节点配置。
在终端中执行下面命令:
[root@master ~]# setup
会出现下图中的内容:
光标移动选择“Firewall configuration”选项,回车进入选项
如果该项前面有“*”标,则按一下空格键关闭防火墙,如下图所示,然后光标移动选择“OK”保存修改内容
选择OK
3.2.5配置hosts列表
该项也需要在HadoopSlave节点配置。
需要在root用户下(使用su命令),编辑主机名列表的命令:
[root@master ~]# vim /etc/hosts
将下面两行添加到/etc/hosts文件中:
192.168.124.142 master
192.168.124.141 slave
注意:这里master节点对应IP地址是192.168.124.142,slave对应的IP是192.168.124.141,而自己在做配置时,需要将这两个IP地址改为你的master和slave对应的IP地址。
查看master的IP地址使用下面的命令:
[lan@master ~]$ ifconfig
master节点的IP是下图中红线标注的内容。
slave的IP地址也是这样查看。
验证是否配置成功的命令是:
[lan@master ~]$ ping master
[lan@master ~]$ ping slave
如果出现下图的信息表示配置成功:
如果出现下图的内容,表示配置失败:
3.2.6安装JDK
该项也需要在HadoopSlave节点配置。
将JDK文件解压,放到/usr/java目录下
[root@master ~]# mkdir /usr/java/
[root@master ~]# mv /home/lan/jdk-8u101-linux-x64.tar.gz /usr/java/
[root@master ~]# cd /usr/java/
[root@master java]# tar -xvf jdk-8u101-linux-x64.tar.gz
配置环境变量
[lan@master ~]$ vim ~/.bash_profile
复制粘贴以下内容添加到到上面gedit打开的文件中:
export JAVA_HOME=/usr/java/jdk1.8.0_101
export PATH=$JAVA_HOME/bin:$PATH
使改动生效命令:
[lan@master ~]$ source ~/.bash_profile
测试配置:
[lan@master ~]$ java -version
如果出现下图的信息,表示JDK安装成功:
7免密钥登录配置
该部分所有的操作都要在lan用户下,切换回lan的命令是:
su -lan
密码是:lan
在终端生成密钥,命令如下(一路点击回车生成密钥)
[lan@master ~]$ ssh-keygen -t rsa
生成的密钥在.ssh目录下如下图所示:
复制公钥文件
[lan@master ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
执行ls -l命令后会看到下图的文件列表:
修改authorized_keys文件的权限,命令如下:
[lan@master .ssh]$ chmod 600 ~/.ssh/authorized_keys
修改完权限后,文件列表情况如下:
将authorized_keys文件复制到slave节点,命令如下:
[lan@master .ssh]$ scp ~/.ssh/authorized_keys lan@slave:~/
如果提示输入yes/no的时候,输入yes,回车
密码是:lan
2、HadoopSlave节点
在终端生成密钥,命令如下(一路点击回车生成密钥)
[lan@slave ~]$ ssh-keygen -t rsa
将authorized_keys文件移动到.ssh目录
[lan@slave ~]$ mv authorized_keys ~/.ssh/
3、验证免密钥登陆
在HadoopMaster机器上执行下面的命令:
[lan@master ~]$ ssh slave
如果出现下图的内容表示免密钥配置成功:
3.3 Hadoop配置部署
每个节点上的Hadoop配置基本相同,在HadoopMaster节点操作,然后完成复制到另一个节点。
下面所有的操作都使用lan用户,切换lan用户的命令是:
[root@master lan]# su - lan
密码是:lan
将软件包中的Hadoop生态系统包复制到相应lan用户的主目录下(直接拖拽方式即可拷贝)
3.3.1 Hadoop安装包解压
进入Hadoop软件包,命令如下:
[lan@master ~]$ cd
复制并解压Hadoop安装包命令如下:
[lan@master ~]$ tar -xvf hadoop-2.7.1.tar.gz
[lan@master ~]$ cd hadoop-2.7.1
ls -l看到如下图的内容,表示解压成功:
3.3.2配置环境变量hadoop-env.sh
环境变量文件中,只需要配置JDK的路径。
[lan@master ~]$ cd hadoop-2.7.1/etc/hadoop/
[lan@master hadoop]$ vim hadoop-env.sh
在文件的靠前的部分找到下面的一行代码:
export JAVA_HOME=${JAVA_HOME}
将这行代码修改为下面的代码:
export JAVA_HOME=/usr/java/jdk1.8.0_101
3.3.3配置环境变量yarn-env.sh
环境变量文件中,只需要配置JDK的路径。
[lan@master hadoop]$ vim yarn-env.sh
在文件的靠前的部分找到下面的一行代码:
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
将这行代码修改为下面的代码(将#号去掉):
export JAVA_HOME=/usr/java/jdk1.8.0_101
然后保存文件。
3.3.4配置核心组件core-site.xml
使用vim编辑:
[lan@master hadoop]$ vim core-site.xml
修改内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/lan/hadoopdata</value>
</property>
</configuration>
3.3.5配置文件系统hdfs-site.xml
使用gedit编辑:
[lan@master hadoop]$ vim hdfs-site.xml
修改内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
3.3.6配置文件系统yarn-site.xml
使用gedit编辑:
[lan@master hadoop]$ vim yarn-site.xml
修改内容如下:
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
</configuration>
3.3.7配置计算框架mapred-site.xml
复制mapred-site-template.xml文件:
[lan@master hadoop]$ cp mapred-site.xml.template mapred-site.xml
使用vim编辑:
[lan@master hadoop]$ vim mapred-site.xml
修改内容如下:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
3.3.8 在master节点配置slaves文件
使用vim编辑:
[lan@master hadoop]$ vim slaves
用下面的代码替换slaves中的内容:
slave
3.3.9 复制到从节点
使用下面的命令将已经配置完成的Hadoop复制到从节点HadoopSlave上:
[lan@master hadoop]$ cd
[lan@master ~]$ scp -r hadoop-2.7.1 lan@slave:~/
注意:因为之前已经配置了免密钥登录,这里可以直接远程复制。
3.4 启动Hadoop集群
下面所有的操作都使用lan用户,切换lan用户的命令是:
su - lan
密码是:lan
3.4.1 配置Hadoop启动的系统环境变量
该节的配置需要同时在两个节点(HadoopMaster和HadoopSlave)上进行操作,操作命令如下:
[lan@master ~]$ vim ~/.bash_profile
将下面的代码追加到.bash_profile末尾:
#HADOOP
export HADOOP_HOME=/home/lan/hadoop-2.7.1
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
然后执行命令:
[lan@master ~]$ source ~/.bash_profile
3.4.3启动Hadoop集群
1、格式化文件系统
格式化命令如下,该操作需要在HadoopMaster节点上执行:
[lan@master ~]$ hdfs namenode -format
看到下图的打印信息表示格式化成功,如果出现Exception/Error,则表示出问题:
2、启动Hadoop
使用start-all.sh启动Hadoop集群,首先进入Hadoop安装主目录,然后执行启动命令:
[lan@master ~]$ cd ~/hadoop-2.7.1
[lan@master hadoop-2.7.1]$ sbin/start-all.sh
执行命令后,提示出入yes/no时,输入yes。
3、查看进程是否启动
在HadoopMaster的终端执行jps命令,在打印结果中会看到4个进程,分别是ResourceManager、Jps、NameNode和SecondaryNameNode,如下图所示。如果出现了这4个进程表示主节点进程启动成功。
在HadoopSlave的终端执行jps命令,在打印结果中会看到3个进程,分别是NodeManager、DataNode和Jps,如下图所示。如果出现了这3个进程表示从节点进程启动成功。
4、Web UI查看集群是否成功启动
在HadoopMaster上启动Firefox浏览器,在浏览器地址栏中输入输入http://master:50070/,检查 namenode 和 datanode 是否正常。UI页面如下图所示。
在HadoopMaster上启动Firefox浏览器,在浏览器地址栏中输入输入http://master:18088/,检查 Yarn是否正常,页面如下图所示。
5、运行PI实例检查集群是否成功
进入Hadoop安装主目录,执行下面的命令:
cd
[lan@master ~]$ cd hadoop-2.7.1/share/hadoop/mapreduce/
[lan@master mapreduce]$ hadoop jar hadoop-mapreduce-examples-2.7.1.jar pi 10 10
会看到如下的执行结果:
最后输出:
Estimated value of Pi is 3.20000000000000000000
如果以上的3个验证步骤都没有问题,说明集群正常启动。