HDFS篇11HA高可用

2次阅读

共计 1591 个字符,预计需要花费 4 分钟才能阅读完成。

先达到极限,而后再冲破它

HA 高可用

HA 概述

  1. 所谓 HA(High Available),即高可用(7*24 小时不中断服务)。
  2. 实现高可用最要害的策略是 打消单点故障。HA 严格来说应该分成各个组件的 HA 机制:HDFS 的 HA 和 YARN 的 HA。
  3. Hadoop2.0 之前,在 HDFS 集群中 NameNode 存在单点故障(SPOF)。
  4. NameNode 次要在以下两个方面影响 HDFS 集群

    NameNode 机器发生意外,如宕机,集群将无奈应用,直到管理员重启

    NameNode 机器须要降级,包含软件、硬件降级,此时集群也将无奈应用

    HDFS HA 性能通过 配置 Active/Standby 两个 NameNodes实现在集群中对 NameNode 的热备来解决上述问题。如果呈现故障,如机器解体或机器须要降级保护,这时可通过此种形式将 NameNode 很快的切换到另外一台机器。

HDFS-HA 工作要点

1. 元数据管理形式须要扭转

内存中各自保留一份元数据;Edits 日志只有 Active 状态的 NameNode 节点能够做写操作;两个 NameNode 都能够读取 Edits;共享的 Edits 放在一个共享存储中治理(qjournal 和 NFS 两个支流实现);

2. 须要一个状态治理功能模块

实现了一个 zkfailover,常驻在每一个 namenode 所在的节点,每一个 zkfailover 负责监控本人所在 NameNode 节点,利用 zk 进行状态标识,当须要进行状态切换时,由 zkfailover 来负责切换,切换时须要避免 brain split 景象的产生。

3. 必须保障两个 NameNode 之间可能 ssh 无明码登录

4. 隔离(Fence),即同一时刻仅仅有一个 NameNode 对外提供服务

HDFS-HA 主动故障转移工作机制

手动转移命令

hdfs haadmin -failover

然而手动转移不够不便,咱们须要配置主动故障转移,主动故障转移为 HDFS 部署减少了两个新组件 ZooKeeper 和 ZKFailoverController(ZKFC)过程

HA 的主动故障转移依赖于 ZooKeeper 的以下性能:

  • 故障检测:集群中的每个 NameNode 在 ZooKeeper 中 保护了一个长久会话,如果机器解体,ZooKeeper 中的会话将终止,ZooKeeper 告诉另一个 NameNode 须要触发故障转移。
  • 现役 NameNode 抉择:ZooKeeper 提供了一个简略的机制用于 惟一的抉择一个节点为 active 状态。如果目前现役 NameNode 解体,另一个节点可能从 ZooKeeper 取得非凡的排外锁以表明它应该成为现役 NameNode。

    ZKFC 是主动故障转移中的另一个新组件,是 ZooKeeper 的客户端,也 监督和治理 NameNode 的状态。每个运行 NameNode 的主机也运行了一个 ZKFC 过程,ZKFC 负责;

  • 衰弱监测:ZKFC 应用一个 健康检查命令定期地 ping 与之在雷同主机的 NameNode,只有该 NameNode 及时地回复衰弱状态,ZKFC 认为该节点是衰弱的。如果该节点解体,解冻或进入不衰弱状态,衰弱监测器标识该节点为非衰弱的。
  • ZooKeeper 会话治理:当本地 NameNode 是衰弱的,ZKFC 放弃一个在 ZooKeeper 中关上的会话。如果本地 NameNode 处于 active 状态,ZKFC 也放弃一个非凡的 znode 锁,该锁应用了 ZooKeeper 对短暂节点的反对,如果会话终止,锁节点将主动删除。
  • 基于 ZooKeeper 的抉择:如果本地 NameNode 是衰弱的,且 ZKFC 发现没有其它的节点以后持有 znode 锁,它将为本人获取该锁。如果胜利,则它曾经博得了抉择,并负责运行故障转移过程以使它的本地 NameNode 为 Active。故障转移过程与后面形容的手动故障转移类似,首先如果必要爱护之前的现役 NameNode,而后本地 NameNode 转换为 Active 状态。

相干材料

正文完
 0