hadoop高可靠性HA集群

概述


 

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册网站空间、营销软件、网站建设、银川网站维护、网站推广。

简单hdfs高可用架构图

 

hadoop高可靠性HA集群

在hadoop2.x中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步active namenode的状态,以便能够在它失败时快速进行切换。
    hadoop2.x官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里楼主使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode(我配了3个)。
    这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为standby状态。hadoop2.4以前的版本中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,2.4以后解决了这个问题,有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调。yarn的HA配置楼主会给出配置文件,受环境影响,这里就不搭建yarn的高可用性了。

主要步骤


 

  1. 备6台Linux机器

  2. 安装JDK、配置主机名、修改IP地址、关闭防火墙

  3. 配置SSH免登陆

  4. 安装zookeeper集群

  5. zookeeper、hadoop环境变量配置

  6. 核心配置文件修改

  7. 启动zookeeper集群

  8. 启动journalnode

  9. 格式化文件系统、格式化zk

  10. 启动hdfs、启动yarn

前期准备


集群规划

  

 主机名IP安装软件进程
hadoop01192.168.8.101jdk、hadoopNameNode、DFSZKFailoverController(zkfc)
hadoop02192.168.8.102jdk、hadoopNameNode、DFSZKFailoverController(zkfc)
hadoop03192.168.8.103jdk、hadoopResourceManager
hadoop04192.168.8.104jdk、hadoop、zookeeperDataNode、NodeManager、JournalNode、QuorumPeerMain
hadoop05192.168.8.105jdk、hadoop、zookeeperDataNode、NodeManager、JournalNode、QuorumPeerMain
hadoop06192.168.8.106jdk、hadoop、zookeeperDataNode、NodeManager、JournalNode、QuorumPeerMain

 

Linux环境  

1.由于楼主机器硬件环境的限制,这里只准备了6台centos7的系统。

hadoop高可靠性HA集群
  2.修改IP。如果跟楼主一样使用VM搭集群,请使用only-host模式。

vim /etc/sysconfig/network-scripts/ifcfg-ens3

hadoop高可靠性HA集群

TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="7f13c30b-0943-49e9-b25d-8aa8cab95e20"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.8.101"NETMASK="255.255.255.0"
GATEWAY="192.168.8.1"

hadoop高可靠性HA集群


  3.修改主机名和IP的映射关系 

hadoop高可靠性HA集群

1  vim /etc/host2 3 192.168.8.101 hadoop014 192.168.8.102 hadoop025 192.168.8.103 hadoop036 192.168.8.104 hadoop047 192.168.8.105 hadoop058 192.168.8.106 hadoop06

hadoop高可靠性HA集群

4.关闭防火墙

1 systemctl stop firewalld.service //停止firewall2 systemctl disable firewalld.service //禁止firewall开机启动

5.修改主机名

1 hostnamectl set-hostname hadoop012 hostnamectl set-hostname hadoop023 hostnamectl set-hostname hadoop034 hostnamectl set-hostname hadoop045 hostnamectl set-hostname hadoop056 hostnamectl set-hostname hadoop06

6.ssh免登陆

生成公钥、私钥

ssh-keygen -t rsa //一直回车

hadoop高可靠性HA集群

将公钥发送到其他机器

ssh-coyp-id hadoop01
ssh-coyp-id hadoop02
ssh-coyp-id hadoop03
ssh-coyp-id hadoop04
ssh-coyp-id hadoop05
ssh-coyp-id hadoop06


  7.安装JDK,配置环境变量

hadoop01,hadoop02,hadoop03

1 export JAVA_HOME=/usr/jdk1.7.0_602 export HADOOP_HOME=/home/hadoop/hadoop-2.7.33 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

hadoop04,hadoop05,hadoop06(包含zookeeper)

1 export JAVA_HOME=/usr/jdk1.7.0_602 export HADOOP_HOME=/home/hadoop/hadoop-2.7.33 export ZOOKEEPER_HOME=/home/hadoop/zookeeper-3.4.104 export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

zookeeper集群安装


 

1.上传zk安装包
  上传到/home/hadoop
  2.解压

tar -zxvf zookeeper-3.4.10.tar.gz


  3.配置(先在一台节点上配置)
    在conf目录,更改zoo_sample.cfg文件为zoo.cfg
  

 mv zoo_sample.cfg zoo.cfg

   
    修改配置文件(zoo.cfg)
       

1 dataDir=/home/hadoop/zookeeper-3.4.10/data       
2 server.1=hadoop04:2888:38883 server.2=hadoop05:2888:38884 server.3=hadoop06:2888:3888

    
    在(dataDir=/home/hadoop/zookeeper-3.4.10/data)创建一个myid文件,里面内容是server.N中的N(server.2里面内容为2)
      

1  echo "5" > myid


    4.将配置好的zk拷贝到其他节点 
      

1 scp -r /home/hadoop/zookeeper-3.4.5/ hadoop05:/home/hadoop2 scp -r /home/hadoop/zookeeper-3.4.5/ hadoop06:/home/hadoop

   
    注意:在其他节点上一定要修改myid的内容
        在hadoop05应该将myid的内容改为2 (echo "6" > myid)
        在hadoop06应该将myid的内容改为3 (echo "7" > myid)

5.启动集群
    分别启动hadoop04,hadoop05,hadoop06上的zookeeper      

1 zkServer.sh start

hadoop2.7.3集群安装


 

1.解压         

1  tar -zxvf hadoop-2.7.3.tar.gz

      2.配置core-site.xml          

hadoop高可靠性HA集群

 1  2      3      4         fs.defaultFS 5         hdfs://ns1 6      7      8      9         hadoop.tmp.dir10         /home/hadoop/hadoop-2.7.3/tmp11     12     13     14         ha.zookeeper.quorum15         hadoop04:2181,hadoop05:2181,hadoop06:218116     17 

hadoop高可靠性HA集群

   3.配置hdf-site.xml

hadoop高可靠性HA集群

 1  2  3      4         dfs.nameservices 5         ns1 6      7      8      9         dfs.ha.namenodes.ns110         nn1,nn211     12     13     14         dfs.namenode.rpc-address.ns1.nn115         hadoop01:900016     17     18     19         dfs.namenode.http-address.ns1.nn120         hadoop01:5007021     22     23     24         dfs.namenode.rpc-address.ns1.nn225         hadoop02:900026     27     28     29         dfs.namenode.http-address.ns1.nn230         hadoop02:5007031     32     33     34         dfs.namenode.shared.edits.dir35         qjournal://hadoop04:8485;hadoop05:8485;hadoop06:8485/ns136     37     38     39         dfs.journalnode.edits.dir40         file:/home/hadoop/hadoop-2.7.3/journal41     42     43     44         dfs.ha.automatic-failover.enabled45         true46     47     48     49         dfs.client.failover.proxy.provider.ns150         org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider51     52     53     54         dfs.ha.fencing.methods55         56             sshfence57             shell(/bin/true)58         59     60     61     62         dfs.ha.fencing.ssh.private-key-files63         /home/hadoop/.ssh/id_rsa64     65     66     67         dfs.ha.fencing.ssh.connect-timeout68         3000069     70 

hadoop高可靠性HA集群

4.配置mapred-site.xml

hadoop高可靠性HA集群

3     4         mapreduce.framework.name5         yarn6     

hadoop高可靠性HA集群

5.配置yarn-site.xml

 

hadoop高可靠性HA集群

 1  2  3  4      5      6        yarn.resourcemanager.hostname.rm1 7        hadoop03 8              9     10        yarn.nodemanager.aux-services11        mapreduce_shuffle12     13 

hadoop高可靠性HA集群

6.配置slaves

1 hadoop042 hadoop053 hadoop06

7.将配置好的hadoop拷贝到其他节点

scp -r /home/hadoop/hadoop-2.7.3 hadoop02:/home/hadoop
scp -r /home/hadoop/hadoop-2.7.3 hadoop03:/home/hadoop
scp -r /home/hadoop/hadoop-2.7.3 hadoop04:/home/hadoop
scp -r /home/hadoop/hadoop-2.7.3 hadoop05:/home/hadoop
scp -r /home/hadoop/hadoop-2.7.3 hadoop06:/home/hadoop

启动


 

1.启动zookeeper集群(分别在hadoop04,hadoop05,hadoop06上启动zookeeper)
           

1 zkServer.sh start

2.查看zookeeper状态

1 zkServer.sh status

包含一个leader,二个follower

hadoop高可靠性HA集群hadoop高可靠性HA集群hadoop高可靠性HA集群

3.启动journalnode(分别在hadoop04,hadoop05,hadoop06上执行)          

hadoop-daemon.sh start journalnode

        运行jps命令检验,hadoop04,hadoop05,hadoop06上多了JournalNode进程

4.格式化HDFS

     在hadoop01上执行命令:          

1 hdfs namenode -format

检查是否成功看终端知否打印:

hadoop高可靠性HA集群

       格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里楼主配置的是/home/hadoop/hadoop-2.7.3/tmp,然后将/home/hadoop/hadoop-2.7.3/tmp拷贝到ihadoop02的/home/hadoop/hadoop-2.7.3/下。
           

1 scp -r tmp/ hadoop02:/hadoop/hadoop-2.7.3/

5.格式化ZK(在hadoop01上执行即可)
          

1  hdfs zkfc -formatZK

效果如下(前面有点多截不下来,只截取了后面一部分):

hadoop高可靠性HA集群

6.启动HDFS(在hadoop01上执行)

1 start-dfs.sh

      7.启动YARN(在hadoop03上执行)          

1 start-yarn.sh

验证


 

到此,hadoop-2.7.3集群全部配置完毕,下面我们来验证:

浏览器访问http://192.168.8.101:50070    NameNode 'hadoop01:9000' (active)
             http://192.168.8.102:50070   NameNode 'hadoop02:9000' (standby)

 

 hadoop高可靠性HA集群hadoop高可靠性HA集群

浏览器访问resourceManager:http://192.168.8.103:8088

hadoop高可靠性HA集群

 

我们可以模拟NameNode(active)宕机,来验证HDFS的HA是否有效,NameNode(active)宕机后,NameNode(standby)会转为active状态,这里楼主不在演示。

结语


 

官网给出的文档还是比较详细的,楼主也是提取了官网的QJM解决方案来进行搭建。另外,yarn的HA搭建官网也给出了具体配置,有兴趣的同学可以试一试。


分享名称:hadoop高可靠性HA集群
当前URL:http://azwzsj.com/article/jpiesc.html