Hadoop(三)手把手教你搭建Hadoop全分布式集群

前言node

  上一篇介绍了伪分布式集群的搭建,其实在咱们的生产环境中咱们确定不是使用只有一台服务器的伪分布式集群当中的。接下来我将给你们分享一下全分布式集群的搭建!linux

  其实搭建最基本的全分布式集群和伪分布式集群基本没有什么区别,只有很小的区别。web

1、搭建Hadoop全分布式集群前提

1.一、网络

  1)若是是在一台虚拟机中安装多个linux操做系统的话,可使用NAT或桥接模式都是能够的。试一试可不能够相互ping通!ubuntu

  2)若是在一个局域网当中,本身的多台电脑(每台电脑安装相同版本的linux系统)搭建,将所要使用的Ubuntu操做系统的网络模式调整为桥接模式。服务器

    步骤:网络

      一是:在要使用的虚拟机的标签上右键单击,选择设置,选择网络适配器,选择桥接模式,肯定ssh

      二是:设置完成以后,重启一下虚拟机 分布式

      三是:再设置桥接以前将固定的IP取消   oop

        桌面版:经过图形化界面设置的。
        服务器版:在/etc/network/interfaces
            iface ens33 inet dhcp
            #address ...测试

      四是:ifconfig获取IP。172.16.21.xxx   

      最后试一试能不能ping通

1.二、安装jdk

  每个要搭建集群的服务器都须要安装jdk,这里就不介绍了,能够查看上一篇

1.三、安装hadoop

  每个要搭建集群的服务器都须要安装hadoop,这里就不介绍了,能够查看上一篇。

2、Hadoop全分布式集群搭建的配置

配置/opt/hadoop/etc/hadoop相关文件

2.一、hadoop-env.sh  

  25行左右:export JAVA_HOME=${JAVA_HOME}
  改为:export JAVA_HOME=/opt/jdk

2.二、core-site.xml 

        <configuration>
            <property>
                <name>fs.defaultFS</name>
                <value>hdfs://mip:9000</value>
            </property>
        </configuration>

  分析:

      mip:在主节点的mip就是本身的ip,而全部从节点的mip是主节点的ip。

      9000:主节点和从节点配置的端口都是9000

2.三、hdfs-site.xml

  注意:**:下面配置了几个目录。须要将/data目录使用-R给权限为777。

        <configuration>
            <property>
                <name>dfs.nameservices</name>
                <value>hadoop-cluster</value>
            </property>
            <property>
                <name>dfs.replication</name>
                <value>1</value>
            </property>
            <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:///data/hadoop/hdfs/nn</value>
            </property>
            <property>
                <name>dfs.namenode.checkpoint.dir</name>
                <value>file:///data/hadoop/hdfs/snn</value>
            </property>
            <property>
                <name>dfs.namenode.checkpoint.edits.dir</name>
                <value>file:///data/hadoop/hdfs/snn</value>
            </property>
            <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:///data/hadoop/hdfs/dn</value>
            </property>
        </configuration>

   分析:

      dfs.nameservices:在一个全分布式集群大众集群当中这个的value要相同

      dfs.replication:由于hadoop是具备可靠性的,它会备份多个文本,这里value就是指备份的数量(小于等于从节点的数量)

   一个问题:

      dfs.datanode.data.dir:这里我在配置的时候遇到一个问题,就是当使用的这个的时候从节点起不来。当改为fs.datanode.data.dir就有用了。

      可是官方给出的文档确实就是这个呀!因此很邪乎。由于只有2.0版本以前是fs

2.4.mapred-site.xml        

  注意:若是在刚解压以后,是没有这个文件的,须要将mapred-site.xml.template复制为mapred-site.xml。

        <configuration>
            <property>
      <!-指定Mapreduce运行在yarn上--> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>

2.五、yarn-site.xml  

        <configuration>
            <!-- 指定ResourceManager的地址-->
            <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>mip</value>
            </property>
            <!-- 指定reducer获取数据的方式-->
            <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
            </property>
            <property>
                <name>yarn.nodemanager.local-dirs</name>
                <value>file:///data/hadoop/yarn/nm</value>
            </property>

  分析:

    mip:在主节点的mip就是本身的ip,而全部从节点的mip是主节点的ip。

2.六、建立上面配置的目录

    sudo mkdir -p /data/hadoop/hdfs/nn
    sudo mkdir -p /data/hadoop/hdfs/dn
    sudo mkdir -p /data/hadoop/hdfs/snn
    sudo mkdir -p /data/hadoop/yarn/nm

  必定要设置成:sudo chmod -R 777 /data

3、全分布式集群搭建测试

3.一、运行环境

  有三台ubuntu服务器(ubuntu 17.04):

      主机名:udzyh1   IP:1.0.0.5     做为主节点(名字节点)

      主机名:server1   IP:1.0.0.3     做为从节点(数据节点)

      主机名:udzyh2    IP:1.0.0.7     做为从节点(数据节点) 

  jdk1.8.0_131

  hadoop 2.8.1

3.二、服务器集群的启动与关闭

  

  名字节点、资源管理器:这是在主节点中启动或关闭的。

  数据节点、节点管理器:这是在从节点中启动或关闭的。

  MR做业日志管理器:这是在主节点中启动或关闭的。

3.三、效果

  在主节点:udzyh1中

  

 在从节点:server1中

  

 在从节点:udzyh2中

  

  咱们在主节点的web控制页面中:http:1.0.0.5:50070中查看到两个从节点

    

  说明配置成功

3.四、监控平台

  

4、Hadoop全分布式集群配置免密登陆实现主节点控制从节点

配置这个是为了实现主节点管理(开启和关闭)从节点的功能:

  

咱们只须要在主节点中使用start-dfs.sh/stop-dfs.sh就能开启或关闭namenode和全部的datanode,使用start-yarn.sh/stop-yarn.sh就能开启或关闭resourcemanager和全部的nodemanager。

4.一、配置主从节点之间的免密登陆

  1)在全部的主从节点中执行

    若是之前配置过免密登陆的话,建议删除从新创建过,由于咱们须要配置的是多台服务器:
      rm -r  ~/.ssh
     执行ssh-keygen为了在主节点中生成公钥和私钥,在从从节点生成.ssh目录
  2)在主节点中执行 
    scp  ~/.ssh/id_rsa.pub   从节点的用户名@从节点ip:~
    注意:第一次远程链接的话,首先输入yes,而后是从节点密码
    

  3)在全部的从节点中执行

    咱们把主节点的公钥已经拿到了全部的从节点中,接下来就是:
      cat id_rsa.pub>>.ssh/authorized_keys当中
    在从节点:1.0.0.3
    

    在从节点1.0.0.7

    

  4)测试

    

    咱们能够查看他们是用户名相同的,因此能够直接使用ssh 1.0.0.3远程链接

    

4.二、实现主节点控制从节点

  1)在主节点中

    打开vi  /opt/hadoop/etc/hadoop/slaves

     

    把它删掉,而后配置上全部从节点的主机名
    注意:这样配置的前提是 主节点要能免密登陆到从节点中
    当 你去执行start-dfs.sh时,它会去slaves文件中去找从节点(这就是配置免密登陆的缘由)
    而后去启动从节点。同时 本身也须要作免密登陆也就是说要本身对本身作免密登陆.
  2)在主节点中
        cat .ssh/id_rsa.pub >> .ssh/authorized_keys 
  3)  测试
    ssh  127.0.0.1
      
  注意:在主节点 执行start-dfs.sh中主节点的用户名必须和全部从节点的用户名相同。由于那个服务器执 行这个脚本
      就以这个用户名去远程登陆到其余从节点的服务器中,因此在全部的生产环境中控制同一类集群的用户必定要相同。

4.三、测试实现主节点控制从节点

  1)在主节点的服务器中执行start-dfs.sh

    

  2)在web监控平台查询

    

  3)在主节点的服务器中执行stop-dfs.sh

    

  3)在主节点的服务器中执行start-yarn.sh

    

  4)在web监控平台查询到

    

  5)在主节点的服务器中执行stop-yarn.sh

    

5、配置集群中遇到的问题

  2)主节点和从节点启动了,可是在主节点的web控制页面查找不到从节点(linux系统安装在不一样的物理机上面)

    

  解决方案:   

   在服务器添加完公钥以后,ssh服务器而后报了这个错误
          sign_and_send_pubkey: signing failed: agent refused operation
        而后执行了如下命令才好。。
          eval "$(ssh-agent -s)"  注意:-s前面有空格
           ssh-add
  3)
    
    在全部主节点和从节点的服务器中的/etc/hosts中:   删除全部关于ipv6的配置
    

    它不能创建IPv6的链接,因此删除了IPv6以后系统会使用IPv4(在主节点上添加从节点的标识的)

  4)在主节点的web控制页面查询不到从节点信息(可是使用jps能够查询到)

      我说过须要在etc/hosts文件中加入全部集群服务器的ip和主机名
      可是今天今天我测试的时候出现问题,而后我就把 主从节点的在hosts文件配置的各个节点的ip+主机的配置删除了
    
   我估计这是由于我是在一台虚拟机中安装了多台的ubuntu中进行搭建集群的缘由。
 

喜欢就点个“推荐”哦! 

相关文章
相关标签/搜索