美文网首页
Hadoop2.6 Namenode HA 原理

Hadoop2.6 Namenode HA 原理

作者: yannhuang | 来源:发表于2017-06-30 11:46 被阅读231次

    Hadoop2.6 Namenode的高可用原理可以表示为以下过程:

    NN-HA原理

    下面把各个组件的作用说明如下:

    1. Active NameNode 和 Standby NameNode:两台 NameNode 形成互备,一台处于 Active 状态,为主 NameNode,另外一台处于 Standby 状态,为备 NameNode,只有主 NameNode 才能对外提供读写服务。主 NameNode 把EditLog写入 JN中,备 NameNode 从JN中获取EditLog合并到FSImage中。

    2. 主备切换控制器 ZKFailoverController:ZKFailoverController 作为独立的进程运行,对 NameNode 的主备切换进行总体控制。ZKFailoverController 能及时检测到 NameNode 的健康状况,在主 NameNode 故障时借助 Zookeeper 实现自动的主备选举和切换,当然 NameNode 目前也支持不依赖于 Zookeeper 的手动主备切换。
      ZKFailoverController 进程是HA中比较核心的组件,它一方面监控着NaneNode进程(通过HealthMonitor线程),另一方面监控这Zookeeper进程(通过ActiveStandbyElector线程)。涉及到监控就会有超时时间设置。在笔者运维过的Hadoop系统中,出现过NameNode的Active节点经常发生切换的现象,都是因为ZKFailoverController监控Zookeeper和NameNode的超时时间设置过短导致的。
      ZKFailoverController监控NameNode的超时配置项是:ha.health-monitor.rpc-timeout.ms,默认是50000ms,可以适当调长一些

    <!-- HealthMonitor check namenode 的超时设置,默认50000ms,改为5mins -->
        <property>
            <name>ha.health-monitor.rpc-timeout.ms</name>
            <value>300000</value>
        </property
    

    ZKFailoverController监控Zookeeper的超时配置项是:ha.zookeeper.session-timeout.ms,默认是5000ms,也可以适当调长一些

    <!-- zk failover的session 超时设置,默认5000ms,改为3mins -->
        <property>
            <name>ha.zookeeper.session-timeout.ms</name>
            <value>180000</value>
        </property>
    
    1. Zookeeper 集群:为主备切换控制器提供主备选举支持。

    2. 共享存储系统JournalNode:共享存储系统是实现 NameNode 的高可用最为关键的部分,共享存储系统保存了 NameNode 在运行过程中所产生的 EditLog。主 NameNode 和备NameNode 通过共享存储系统实现元数据同步。在进行主备切换的时候,新的主 NameNode 在确认元数据完全同步之后才能继续对外提供服务。

    3. DataNode 节点:除了通过共享存储系统共享 HDFS 的元数据信息之外,主 NameNode 和备 NameNode 还需要共享 HDFS 的数据块和 DataNode 之间的映射关系。DataNode 会同时向主 NameNode 和备 NameNode 上报数据块的位置信息。

    Hadoop的ResourceManager也实现了HA的功能,但是相对比较简单:

    RM HA

    RM的HA只是利用Zookeeper来实现主从切换,但是大体原理跟NameNode的原理差不多。

    在自动故障转移方面,RM不需要运行单独的守护进程ZKFC,因为RM有内置的基于ZooKeeper的ActiveStandbyElector类用于在active RM宕机或者无响应时自动选择哪个standbyRM将做为active RM,因为该类实现了ZKFC的功能。

    相关文章

      网友评论

          本文标题:Hadoop2.6 Namenode HA 原理

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