Hadoop HA及Failover搭建

作者: z小赵 | 来源:发表于2017-10-18 11:39 被阅读35次

    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

    <property>

             <name>dfs.nameservices</name>

             <value>ns1</value>

    </property>

    <property>

            <name>dfs.ha.namenode.ns1</name>

            <value>nn1,nn2</value>

    </property>

    #配置namenode RPC address

    <property>

             <name>dfs.namendoe.rpc-address.ns1.nn1</name>

             <value>master:8020</value>

    </property>

    <property>

            <name>dfs.namendoe.rpc-address.ns1.nn1</name>

            <value>slave1:8020</value>

    </property>

    #配置Namenode HTTP WEB的地址

    <property>

            <name>dfs.namenode.http-address.ns1.nn1</name>

            <value>master:50070</value>

    </property>

    <property>

            <name>dfs.namenode.http-address.ns1.nn1</name>

            <value>slave1:50070</value>

    </property>

    #配置journalnode,share edit地址

    <property>

             <name>dfs.namenode.shared.edits.dir</name>

            <value>qjournal://master:8485;slave1:8485;slave2:8485/ns1</value>

    </property>

    #配置edits的存放位置

    <property>

             <name>dfs.journalnode.edits.dir</name>

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

              <value>/usr/local/src/hadoop-2.5.0/data/dfs/jn</value>

    </property>

    #配置代理

    <property>

            <name>dfs.client.failover.proxy.provider.ns1</name>      

            <value>org.apache.hadoop.hdfs.hadoop.hdfs.server.namenode.ha.

    ConfiguredFailoverProxyProvider</value>

    </property>

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

    <property>

            <name>dfs.ha.fencing.methods</name>

            <value>sshfence</value>

    </property>

    <property>

              <name>dfs.ha.fencing.ssh.private-key-files</name>

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

              <value>/root/.ssh/id_rsa</value>

    </property>

    #开启HA故障自动转移

    <property>

             <name>dfs.ha.automatic-failover.enabled</name>

             <value>true</value>

    </property>

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

    <property>

             <name>fs.defaultFS</name>

             <value>hdfs://ns1</value>

    </property>

    <property>

             <name>hadoop.tmp.dir</name>

             <value>/usr/local/src/hadoop-2.5.0/data/tmp</value>

    </property>

    <property>

             <name>fs.trash.interval</name>

             <value>420</value>

    </property>

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

    <property>

             <name>ha.zookeeper.quorum</name>

            <value>master:2181,slave1:2181,slave2:2181</value>

    </property>

    启动测试:


    ①. 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搭建

        本文链接:https://www.haomeiwen.com/subject/aussuxtx.html