此文已由做者朱笑笑受权网易云社区发布。
node
欢迎访问网易云社区,了解更多网易技术产品运营经验。web
上一篇文章介绍了如何搭建Hadoop伪分布式集群,本篇将向你们介绍下Hadoop分布式集群的搭建。内容浅显,但可以为新手们提供一个参考,让像我同样的小白们对Hadoop的环境可以有必定的了解。vim
环境:网络
系统环境:CentOS7.3.1611 64位框架
Java版本:OpenJDK 1.8.0ssh
使用两个节点做为集群环境:一个做为Master节点,另外一个做为Slave节点分布式
集群搭建流程:oop
Hadoop集群的安装配置主要流程以下:测试
(1)选定一台机器做为Master;.net
(2)在Master节点上配置hadoop用户、Java环境及安装SSH server;
(3)在 Master 节点上安装 Hadoop,完成配置;
(4)其他机器做为Slave节点,同理,在 Slave 节点上配置 hadoop 用户、Java环境、安装 SSH Server;
(5)将 Master 节点上的Hadoop安装目录内容复制到其余 Slave 节点上;
(6)在 Master 节点上开启 Hadoop;
以上步骤中,配置hadoop用户、Java环境,安装SSH server,安装Hadoop的步骤在《Hadoop单机/伪分布式集群搭建(新手向)》一文中作了比较详细的介绍,你们能够参照此文中的步骤来:http://ks.netease.com/blog?id=8333。
集群全部的节点都须要位于同一个局域网,所以在完成上述步骤的前4步骤后,先进行如下的网络配置,实现节点间的互连。
网络配置
本文使用的是VMware虚拟机安装的系统,因此只须要更改网络链接方式为桥接(Bridge)模式,便能实现节点互连。如图:
配置完成后能够在各个节点上查看节点的ip,Linux中查看节点IP地址的命令为:ifconfig,以下图所示,Master节点的ip为10.240.193.67:
网络配置完成后,即可进行hadoop分布式集群的配置了。
为了可以方便的区分Master和Slave,咱们能够修改节点的主机名用以区分。在CentOS7中,咱们在Master节点上执行如下命令来修改主机名:
sudo vim /etc/hostname
将主机名修改成Master:
同理,修改Slave节点的主机名为Slave。
而后,在Master和Slave节点上都执行以下命令修改IP映射,添加全部节点的IP映射:
sudo vim /etc/hosts
本文中使用的两个节点的名称与对应IP关系以下:
修改完成后须要重启节点,使得以上配置生效。能够在各个节点上ping其余节点的主机名,若能ping通说明配置成功。
SSH无密码登录节点
分布式集群搭建须要Master节点可以无密码SSH登录至各个Slave节点上。所以,咱们须要生成Master节点的公钥,并将Master公钥在Slave节点中加入受权。步骤以下:
(1)首先生成Master节点的公钥,执行以下命令:
cd ~/.ssh --若无该目录,先执行ssh localhost
rm ./id_rsa* --若已生成过公钥,则删除原有的公钥
ssh-keygen -t rsa --一路回车
(2)Master节点需能无密码SSH登录本机,在Master节点上执行命令:
cat ./id_rsa.pub >> ./authorized_keys
chmod 600 ./authorized_keys
若不执行修改权限,会出现如下问题,仍没法实现无密码SSH登录本机。
完成后,执行ssh Master验证是否能够无密码SSH登录本机,首次登录须要输入yes,输入exit便可退出登录。
(3)在Master节点将生成的公钥传输至Slave节点,能够执行如下命令:
scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/
上述scp命令远程将Master节点的公钥拷贝至了Slave节点的/home/hadoop目录下,执行过程当中会要求输入Slave节点hadoop用户的密码,输入完成后会显示传输的进度:
(4)在Slave节点上,将Master节点的ssh公钥加入受权,执行命令:
ssh localhost --执行该命令是为了生成~/.ssh目录,或者mkdir ~/.ssh建立
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
(5)至此,已经完成 了Master节点无密码SSH登录到Slave节点的配置。在Master节点上输入命令:ssh Slave 进行验证,登录成功以下图:
配置hadoop分布式环境
配置hadoop分布式环境须要修改hadoop中的五个配置文件,分别为:slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml。具体的配置项及做用能够参考官网的说明,这里对正常启动分布式集群所必须的配置项进行配置。
一、slaves
将做为DataNode节点的主机名写入文件。该文件默认为localhost,所以伪分布配置时,节点是NameNode的同时也是DataNode。localhost能够删除有能够保留。本文Master仅做为NameNode节点,Slave做为DataNode节点,所以删除localhost。
二、core-site.xml
三、hdfs-site.xml
因为只有一个Slave节点,全部dfs.replication的值设为1。
四、mapred-site.xml
默认文件名为mapred-site.xml.template,重命名为mapred-site.xml后,修改配置。
五、yarn-site.xml
配置完成后,将Master上的hadoop文件夹复制到Slave节点上相同路径下(/usr/local/),并修改文件夹的owner为hadoop。
接着即可启动分布式hadoop集群了,启动集群前须要先关闭集群中每一个节点的防火墙,不然会引发DataNode启动了,但Live datanode为0。
启动分布式集群
首次启动须要先在Master节点执行NameNode的格式化,命令:
hdfs namenode -format
而后启动hadoop,hadoop的启动与关闭须要在Master节点上进行。
启动hadoop,执行hadoop/sbin中的启动脚本
cd /usr/local/hadoop/sbin
./start-dfs.sh
./start-yarn.sh
./mr-jobhistory-daemon.sh start historyserver
启动完成后,经过jps命令能够查看各个节点所启动的进程。启动正确则能够看到ResourceManager、Namenode、SecondaryNameNode、JobHistoryServer进程,如图。
在Slave节点中能够看到NodeManager和DataNode进程,如图。
任一进程缺乏都表示启动出错。同时,咱们还须要在Master节点经过命令hdfs dfsadmin -report查看DataNode是否正常启动,若是Live datanode为0,则说明启动失败。因为咱们只配置了一个DataNode,因此显示Live datanode为1,如图。
咱们还能够经过web页面查看DataNode和NameNode的状态:http://master:50070。
接着咱们即可以执行分布式实例了,咱们启动了mr-jobhistory服务,能够经过Web页http://master:8088/cluster,点击Tracking UI中的history查看任务运行信息。
关闭hadoop集群
在Master节点上执行脚本:
stop-yarn.sh
stop-dfs.sh
mr-jobhistory-daemon.sh stop historyserver
网易云免费体验馆,0成本体验20+款云产品!
更多网易技术、产品、运营经验分享请点击。
相关文章:
【推荐】 [翻译]pytest测试框架(一)
【推荐】 网易郑栋:数据采集与分析的那些事——从数据埋点到AB测试