Hadoop HA及Failover搭建

Hadoop HA及Failover功能简单介绍:

在Hadoop1.X版本中使用单个NameNode来管理所有的DataNode的元数据,一旦NameNode节点发生故障将导致整个集群不可用,而且必须手动恢复NameNode节点才能够正常提供服务。基于以上致命的缺点,Hadoop2.X提出了HA(High Available)来改进单点故障;另外,通过使用Zookeeper的分布式通知协调功能实现HA的Failover(故障自动转移),而无需人工介入。下面开始介绍HA和Failover的安装配置。

首先,开始本文之前请先搭建好Zookeeper的环境,后续文章中会写关于Zookeeper如何搭建(各位看官如果有不会搭建Zookeeper的,目前请先自行百度,静候博主推出关于Zookeeper的搭建教程,博主这里默认已经搭建好了Zookeeper),本文是建立在分布式基础上进行的修改,如果已经安装好了完全分布式环境,则直接开始本文接下来的内容;如果还没有搭建好完全分布式环境,请看博主的上一篇关于完全分布式环境搭建教程,链接如下:

http://www.jianshu.com/p/962ac811623f

关于版本的介绍:

Zookeeper: zookeeper-3.4.5

Hadoop: hadoop-2.5.0

搭建HA:

1.修改hdfs-site.xml文件,内容如下:

#配置HA的nameservices

         dfs.nameservices

         ns1

        dfs.ha.namenode.ns1

        nn1,nn2

#配置namenode RPC address

         dfs.namendoe.rpc-address.ns1.nn1

         master:8020

        dfs.namendoe.rpc-address.ns1.nn1

        slave1:8020

#配置Namenode HTTP WEB的地址

        dfs.namenode.http-address.ns1.nn1

        master:50070

        dfs.namenode.http-address.ns1.nn1

        slave1:50070

#配置journalnode,share edit地址

         dfs.namenode.shared.edits.dir

        qjournal://master:8485;slave1:8485;slave2:8485/ns1

#配置edits的存放位置

         dfs.journalnode.edits.dir

          #这个目录请自行指定且该指定的目录已经创建好

          /usr/local/src/hadoop-2.5.0/data/dfs/jn

#配置代理

        dfs.client.failover.proxy.provider.ns1      

        org.apache.hadoop.hdfs.hadoop.hdfs.server.namenode.ha.

ConfiguredFailoverProxyProvider

#配置namenode的隔离方式,这里使用ssh隔离方式,要求两个namenode之间能够通过ssh免密码登录

        dfs.ha.fencing.methods

        sshfence

          dfs.ha.fencing.ssh.private-key-files

          #这里根据实际情况修改,一般为/home/用户名/.ssh/id_rsa

          /root/.ssh/id_rsa

#开启HA故障自动转移

         dfs.ha.automatic-failover.enabled

         true

2.修改core-site.xml文件,内容如下:

         fs.defaultFS

         hdfs://ns1

         hadoop.tmp.dir

         /usr/local/src/hadoop-2.5.0/data/tmp

         fs.trash.interval

         420

#通过使用zookeeper实现HA故障自动转移

         ha.zookeeper.quorum

        master:2181,slave1:2181,slave2:2181

启动测试:


①. HA通过使用zookeeper实现自动故障转移,实现方式如下:

    1. 配置好以后,启动所有节点的zookeeper服务

    2. 初始化HA在zookeeper中的状态,执行如下命令:

      bin/hdfs zkfc -formatZK


②. 启动HA,启动顺序如下:

    1. 启动每个节点的journalnode进程

sbin/hadoop-daemon.sh start journalnode

    2. 格式化集群,并启动namenode

bin/hdfs namenode -format        在nn1上执行格式化操作

sbin/hadoop-daemon.sh start namenode

    3. 同步nn1上的元数据到第二个nn2上,在nn2上执行如下命令

bin/hdfs namenode -bootstrapStandby

    4. 启动第二个namenode

sbin/hadoop-daemon.sh start namenode

    5. 启动datanode,在各个节点下执行如下命令启动datanode

sbin/hadoop-daemon.sh start datanode

    6.将一个namenode变成active状态,执行如下命令

bin/hdfs haadmin -transitionToActive nn1

#查看namenode的状态

bin/hdfs haadmin -getServiceState nn1

#将namenode变为standby状态

bin/hdfs haadmin -transitionToStandby nn1

      7. 对集群做基本测试,

          测试见:http://www.jianshu.com/p/962ac811623f 文章中的测试


至此,Hadoop的HA及Failover搭建完成,预祝各位朋友搭建成功。欢迎关注。

如需转载,请注明:

z小赵  Hadoop HA及Failover搭建

你可能感兴趣的:(Hadoop HA及Failover搭建)