Hadoop的HA原理

Posted NC_NE

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop的HA原理相关的知识,希望对你有一定的参考价值。

一、概述

Hadoop的HA应该分为HDFS 的 HA YARN 的 HA,主要是解决NameNodeResourceManager的单点故障问题,所以HA就是通过配置 Active/Standby 两个 实例来解决单点故障

二、HDFS-HA 工作机制

2.1HDFS-HA 工作要点

(1)元数据管理方式改变

两个NameNode内存中各自保存一份元数据,Edits 日志只有 Active 状态的 NameNode 节点可以做写操作, 两个 NameNode 都可以读取 Edits,共享的 Edits 放在一个共享存储中JounalNode

(2) 增加一个状态管理功能模块

Zkfailover(hadoop的模块),常驻在每一个 namenode 所在的节点,每一个 zkfailover 负责监控自己所在 NameNode 节点,和ZooKeeper通信利用 zk 进行状态标识,当需要进行状态切换时,由 zkfailover 来负责切换,切换时需要防止 brain split 现象的发生。

(3) 必须保证两个 NameNode 之间能够 ssh 无密码登录(为了防止脑裂,远程登录进行kill)

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

2.2、 HDFS-HA 自动故障转移工作机制

1)故障检测:集群中的每个NameNode在ZooKeeper 中维护了一个持久会话,如果机器崩溃,ZooKeeper 中的会话将终止,ZooKeeper 通知另一个 NameNode 需要触发故障转移。

2)现役 NameNode 选择:ZooKeeper 提供了一个简单的机制用于唯一的选择一个节点为 active 状态。如果目前现役 NameNode 崩溃,另一个节点可能从 ZooKeeper 获得特殊的排外锁以表明它应该成为现役 NameNode。

3)ZKFC工作原理: 

(1)健康监测:ZKFC 使用一个健康检查命令定期地 ping 与之在相同主机的 NameNode,只要该 NameNode 及时地回复健康状态,ZKFC 认为该节点是健康的。如果该节点崩溃,冻结或进入不健康状态,健康监测器标识该节点为非健康的。

(2)ZooKeeper 会话管理:当本地 NameNode 是健康的,ZKFC 保持一个在 ZooKeeper中打开的会话。如果本地 NameNode 处于 active 状态,ZKFC 也保持一个特殊的 znode 锁,该锁使用了 ZooKeeper 对短暂节点的支持,如果会话终止,锁节点将自动删除。

(3)基于 ZooKeeper 的选择:如果本地 NameNode 是健康的,且 ZKFC 发现没有其它的节点当前持有 znode 锁,它将为自己获取该锁。如果成功,则它已经赢得了选择,并负责运行故障转移进程以使它的本地 NameNode 为 Active。

三、YARN-HA 工作机制

yarn的高可只依赖于zookeeper即可,所以只需要配置一下高可用参数和zookeeper参数即可

 可以参考官网

 

以上是关于Hadoop的HA原理的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop NameNode HA模式的搭建以及原理

Hadoop2 HA介绍

hadoop配置名称节点HA原理

Hadoop高可用HA原理-全流程讲解

Hadoop HA详解

HADOOP docker:HDFS 高可用原理