Hadoop分布式集群的搭建

此文已由做者朱笑笑受权网易云社区发布。
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测试

相关文章
相关标签/搜索