首页 > 其他分享 >Hadoop分布式集群的搭建

Hadoop分布式集群的搭建

时间:2023-07-07 17:31:38浏览次数:31  
标签:Slave 配置 Hadoop hadoop Master ssh 集群 节点 分布式



 

本篇将向大家介绍下Hadoop分布式集群的搭建。内容浅显,但能够为新手们提供一个参考,让像我一样的小白们对Hadoop的环境能够有一定的了解。

环境:

        系统环境:CentOS7.3.1611 64位

        Java版本:OpenJDK 1.8.0

        使用两个节点作为集群环境:一个作为Master节点,另一个作为Slave节点

集群搭建流程:

        Hadoop集群的安装配置主要流程如下:

        (1)选定一台机器作为Master;

        (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。具体的配置项及作用可以参考官网的说明,这里对正常启动分布式集群所必须的配置项进行配置。

        1、slaves

             将作为DataNode节点的主机名写入文件。该文件默认为localhost,因此伪分布配置时,节点是NameNode的同时也是DataNode。localhost可以删除有可以保留。本文Master仅作为NameNode节点,Slave作为DataNode节点,因此删除localhost。

        2、core-site.xml

         3、hdfs-site.xml

               由于只有一个Slave节点,所有dfs.replication的值设为1。

         4、mapred-site.xml

              默认文件名为mapred-site.xml.template,重命名为mapred-site.xml后,修改配置。

        

        5、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

标签:Slave,配置,Hadoop,hadoop,Master,ssh,集群,节点,分布式
From: https://blog.51cto.com/nethub/6654918

相关文章

  • 部署集群出现问题总结
    部署集群出现问题总结1,未在已配置的存储库中找到任何parcel在装cdh的时候遇到了问题,配置完parcel存储库以后页面提示:未在已配置的存储库中找到任何parcel。尝试在更多选项下添加一个自定义存储库。否则,您可能只能继续使用包默认的parcel存储库目录是cd/opt/cloudera/parc......
  • 基于Redis的分布式锁实现方案
    本文介绍基于RedisLUA脚本实现分布式锁的具体方案。为了便于在微服务架构的项目中使用,方案以注解切面的方式实现,可单独提炼项目打成jar包。一、注解核心注解有两个CacheLock和CacheParam。@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documen......
  • python下使用redis分布式锁
    python下使用redis分布式锁1.什么场景需要分布式锁?我们在写业务逻辑的时候,如果多个线程同时访问某个共享变量,一般是对变量进行上锁或者使用queue.Queue()实现,以做到线程安全保证数据不被污染。在单机部署的情况下这样做完全没问题,但是随着业务规模的发展,某些单机部署的系统......
  • Redis实战(黑马点评--分布式锁)
    基本原理和不同的实现方式分布式锁的核心思想就是让大家共用同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路 可见性:多个线程都能看到相同的结果。注意:这里说的可见性并不是并发编程中指的内存可见性,只是说多个进程之间都能感知到变化的......
  • 自己动手实现rpc框架(二) 实现集群间rpc通信
    自己动手实现rpc框架(二)实现集群间rpc通信1.集群间rpc通信上一篇博客中MyRpc框架实现了基本的点对点rpc通信功能。而在这篇博客中我们需要实现MyRpc的集群间rpc通信功能。自己动手实现rpc框架(一)实现点对点的rpc通信上篇博客的点对点rpc通信实现中,客户端和服务端的ip......
  • 高可用 ZooKeeper 集群部署(进阶中级)
    高可用ZooKeeper集群部署(进阶中级)免密登录[root@master~]#ssh-keygen[root@master~]#ssh-copy-idroot@slave1[root@master~]#ssh-copy-idroot@slave2[root@master~]#sshslave1Lastlogin:TueMay2322:10:272023from192.168.100.1[root@slave1~]#exit......
  • HBase 分布式部署(进阶中级)
    1.HBase分布式部署(进阶中级)1.实验任务一:部署前期准备1.1.步骤一:安装部署hadoopha分布式环境1.2.步骤二:解压安装文件[root@master~]#cd[root@master~]#lsanaconda-ks.cfgjdk-8u152-linux-x64.tar.gzhadoop-2.7.1.tar.gzzookeeper-3.4.8.tar.gzhb......
  • 选对方法,K8s 多集群管理没那么难
    作者:庄宇Kubernetes作为一项核心技术已成为现代应用程序架构的基础,将Kubernetes作为容器编排系统已发展为越来越多企业的必然选择。随着对云计算接受程度不断提高,以及企业规模和业务持续发展的共同驱动下,越来越多的企业在考虑或已经采用多云和混合云方案,以提升架构的灵活性和......
  • mac spark+hive+hadoop 数据分析环境搭建(单机简版)
    apache产品下载地址:http://archive.apache.org/dist/mysql5.6brew方式安装配置:Icon mysql做为元数据存储使用。[email protected] 配置mysqlhome:exportMYSQL_HOME=/usr/local/opt/[email protected]启动mysql:$MYSQL_HOME/bin/mysql.serverstart$M......
  • Docker+Emqx+Nginx集群及负载均衡的搭建 MQTT服务器
    Docker+Emqx+Nginx集群及负载均衡的搭建MQTT服务器1.拉取镜像dockerpullemqx/emqx2.创建虚拟网络#-d参数默认为bridge,可省略dockernetworkcreate-dbridge--subnet=172.18.0.0/16emqx_bridge3.创建Docker容器#节点1dockerrun-d--hostnameemqx01--nameem......