设为首页 收藏本站
查看: 1036|回复: 0

[经验分享] Hadoop(三)手把手教你搭建Hadoop全分布式集群

[复制链接]

尚未签到

发表于 2017-12-16 22:10:40 | 显示全部楼层 |阅读模式
  前言
  上一篇介绍了伪分布式集群的搭建,其实在我们的生产环境中我们肯定不是使用只有一台服务器的伪分布式集群当中的。接下来我将给大家分享一下全分布式集群的搭建!
  其实搭建最基本的全分布式集群和伪分布式集群基本没有什么区别,只有很小的区别。

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

1.1、网络
  1)如果是在一台虚拟机中安装多个linux操作系统的话,可以使用NAT或桥接模式都是可以的。试一试可不可以相互ping通!
  2)如果在一个局域网当中,自己的多台电脑(每台电脑安装相同版本的linux系统)搭建,将所要使用的Ubuntu操作系统的网络模式调整为桥接模式。
  步骤:
  一是:在要使用的虚拟机的标签上右键单击,选择设置,选择网络适配器,选择桥接模式,确定
  二是:设置完成之后,重启一下虚拟机 
  三是:再设置桥接之前将固定的IP取消   
  桌面版:通过图形化界面设置的。
  服务器版:在/etc/network/interfaces
  iface ens33 inet dhcp
  #address ...
  四是:ifconfig获取IP。172.16.21.xxx   
  最后试一试能不能ping通

1.2、安装jdk
  每一个要搭建集群的服务器都需要安装jdk,这里就不介绍了,可以查看上一篇

1.3、安装hadoop
  每一个要搭建集群的服务器都需要安装hadoop,这里就不介绍了,可以查看上一篇。

二、Hadoop全分布式集群搭建的配置
  配置/opt/hadoop/etc/hadoop相关文件
DSC0000.png


2.1、hadoop-env.sh  
  25行左右:export JAVA_HOME=${JAVA_HOME}
  改成:export JAVA_HOME=/opt/jdk

2.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.3、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.5、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.6、创建上面配置的目录
  

    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.1、运行环境
  有三台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.2、服务器集群的启动与关闭
DSC0001.png

  名字节点、资源管理器:这是在主节点中启动或关闭的。
  数据节点、节点管理器:这是在从节点中启动或关闭的。
  MR作业日志管理器:这是在主节点中启动或关闭的。

3.3、效果
  在主节点:udzyh1中
DSC0002.png

  在从节点:server1中
DSC0003.png

  在从节点:udzyh2中
DSC0004.png

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

  说明配置成功

3.4、监控平台
DSC0006.png


四、Hadoop全分布式集群配置免密登录实现主节点控制从节点
  配置这个是为了实现主节点管理(开启和关闭)从节点的功能:
DSC0007.png

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

4.1、配置主从节点之间的免密登录
  1)在所有的主从节点中执行

    如果以前配置过免密登录的话,建议删除重新建立过,因为我们需要配置的是多台服务器:
      rm -r  ~/.ssh
     执行ssh-keygen为了在主节点中生成公钥和私钥,在从从节点生成.ssh目录
  2)在主节点中执行 
    scp  ~/.ssh/id_rsa.pub   从节点的用户名@从节点ip:~
    注意:第一次远程连接的话,首先输入yes,然后是从节点密码
     DSC0008.png   3)在所有的从节点中执行

    我们把主节点的公钥已经拿到了所有的从节点中,接下来就是:
      cat>
    在从节点:1.0.0.3
     DSC0009.png   在从节点1.0.0.7
DSC00010.png

  4)测试
DSC00011.png

  我们可以查看他们是用户名相同的,所以可以直接使用ssh 1.0.0.3远程连接
DSC00012.png


4.2、实现主节点控制从节点
  1)在主节点中
  打开vi  /opt/hadoop/etc/hadoop/slaves
DSC00013.png  


    把它删掉,然后配置上所有从节点的主机名
    注意:这样配置的前提是主节点要能免密登录到从节点中
    当你去执行start-dfs.sh时,它会去slaves文件中去找从节点(这就是配置免密登录的原因)
    然后去启动从节点。同时自己也需要做免密登录也就是说要自己对自己做免密登录.
  2)在主节点中
       cat .ssh/id_rsa.pub >> .ssh/authorized_keys
  3) 测试
    ssh  127.0.0.1
     DSC00014.png  
  注意:在主节点执行start-dfs.sh中主节点的用户名必须和所有从节点的用户名相同。因为那个服务器执行这个脚本
      就以这个用户名去远程登录到其他从节点的服务器中,所以在所有的生产环境中控制同一类集群的用户一定要相同。
4.3、测试实现主节点控制从节点
  1)在主节点的服务器中执行start-dfs.sh
DSC00015.png

  2)在web监控平台查询
DSC00016.png

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

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

  4)在web监控平台查询到
DSC00019.png

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


五、配置集群中遇到的问题
  2)主节点和从节点启动了,但是在主节点的web控制页面查找不到从节点(linux系统安装在不同的物理机上面)
DSC00021.png

  解决方案:   

   在服务器添加完公钥之后,ssh服务器然后报了这个错误
          sign_and_send_pubkey: signing failed: agent refused operation
        然后执行了以下命令才好。。
          eval "$(ssh-agent -s)"  注意:-s前面有空格
           ssh-add
  3)
     DSC00022.png
    在所有主节点和从节点的服务器中的/etc/hosts中:   删除所有关于ipv6的配置
     DSC00023.png   它不能建立IPv6的连接,所以删除了IPv6之后系统会使用IPv4(在主节点上添加从节点的标识的)
  4)在主节点的web控制页面查询不到从节点信息(但是使用jps可以查询到)

      我说过需要在etc/hosts文件中加入所有集群服务器的ip和主机名
      但是今天今天我测试的时候出现问题,然后我就把主从节点的在hosts文件配置的各个节点的ip+主机的配置删除了。
   我估计这是因为我是在一台虚拟机中安装了多台的ubuntu中进行搭建集群的原因。  喜欢就点个“推荐”哦!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424852-1-1.html 上篇帖子: Hadoop的HA集群启动和停止流程 下篇帖子: 【hadoop】python通过hdfs模块读hdfs数据
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表