HA的⾃动容灾原理

一、组件

如果想进⾏HA 的⾃动故障转移,那么需要为 HDFS 部署两个新组件
        ZooKeeper quorum
        ZKFailoverController进程(缩写为 ZKFC )。

1.1 Zookeeper quorum

        Apache ZooKeeper是⼀项⾼可⽤性服务,⽤于维护少量的协调数据,将数据中的更 改通知客户端并监视客户端的故障。HDFS ⾃动故障转移的实现依赖 ZooKeeper 进⾏ 以下操作:
1 ) 故障检测
        群集中的每个NameNode 计算机都在 ZooKeeper 中维护⼀个持久性会话。如果计算 机崩溃,则ZooKeeper 会话将 终⽌,通知另⼀个NameNode 应触发故障转移。
2 ) 活动的NameNode选举 (HA 的第⼀次启动 )
        ZooKeeper提供了⼀种简单的机制来专⻔选举⼀个节点为活动的节点。如果当前活 动的NameNode 崩溃,则另⼀ 个节点可能会在ZooKeeper 中采取特殊的排他锁,指示它应成为下⼀个活动的 NameNode。

1.2 ZKFC的介绍

        ZKFailoverController( ZKFC )是⼀个新组件,它是⼀个 ZooKeeper 客户端,它监视 和管理namenode 的状态。运⾏ namenode 的每台机器都会运⾏⼀个 ZKFC ,该 ZKFC 负责以下内容:
        
1 ) 运⾏状况监视
        ZKFC使⽤运⾏状况检查命令定期 ping 其本地 NameNode 。只要 NameNode 以健康 状态及时响应,ZKFC 就会认为该 节点是健康的。如果节点崩溃,冻结或以其他⽅式进⼊不正常状态,则运⾏状况监 视器将其标记为不正常。
2 ) ZooKeeper会话管理
        当本地NameNode 运⾏状况良好时, ZKFC 会在 ZooKeeper 中保持打开的会话。如果本地NameNode 处于活动状态,则它还将持有⼀个特殊的“ 锁定 ” znode 。该锁使⽤ ZooKeeper 临时 节点的⽀持。如果会话到期,则锁定节点将被⾃动删除。
3 ) 基于ZooKeeper的选举
        如果本地NameNode 运⾏状况良好,并且 ZKFC 看到当前没有其他节点持有锁 znode,则它本身将尝试获取该锁。 如果成功,则它“ 赢得了选举 ,并负责运⾏故障转移以使其本地 NameNode 处于活 动状态。故障转移过程类似于 上述的⼿动故障转移:⾸先,如有必要,将先前的活动节点隔离,然后将本地 NameNode转换为活动状态。

二、⾃动容灾过程描述

        ZKFC(是⼀个进程,和 NN 在同⼀个物理节点上)有两只⼿,分别拽着 NN 和 Zookeeper。 ( 监控 NameNode 健康状态,并向 Zookeeper 注册 NameNode) ;集群⼀启 动,2 NN 谁是 Active ?谁⼜是 Standby 呢?
         1 )   2个zkfc 先判断⾃⼰的 NN 是否健康,如果健康, 2 zkfc 会向 zoopkeeper 集群抢着创 建⼀个节点,结果就是只有1 个会最终创建成功,从⽽决定 active 地位和 standby位 置。如果 ZKFC1 抢到了节点, ZKFC2 没有抢到, ZKFC2 也会监控 watch 这个节点。
          2 )   如果ZKFC1的 Active NN 异常退出, ZKFC1 最先知道,就访问 ZK ZK 就会把曾经创建的 节点删掉。删除节点就是⼀个事件,谁监控这个节点,就会调⽤callback 回调, ZKFC2 就会把⾃⼰的地位上升到active ,但在此之前要先确认 ZKFC1 的节点是否真的挂掉?这 就引⼊了第三只⼿的概念。
补充:
        Zoopkeeper有⼀个客户端 session 机制,集群启 动之后,2 ZKFC 除了监控⾃⼰的 NN ,还要和 Zoopkeeper 建⽴⼀个 tcp ⻓连接,并各⾃ 获取⾃⼰的session 。只要⼀⽅的 session失 效, Zoopkeeper 就会删除该⽅创建的节点,同时另⼀⽅创建节点,上升地位。
那如果 NN 都没⽑病, ZKFC 挂掉了呢?这个问题大家寻找答案吧

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值