Hadoop HA 高可用

HA简介

HA,即高可用(7*24 小时不中断服务)。实现高可用最关键的策略是消除单点故障。HA 严格来说应该分成各个组件的 HA机制:HDFS 的 HA 和 YARN 的 HA。

HDFS HA简介

在Hadoop2.0版本之前,HDFS集群中一旦NameNode节点所在的机器发生意外,如宕机,集群将无法使用,直到管理员重启。或者NameNode节点的机器需要升级,包括软件、硬件升级,此时集群也将无法使用。

HDFS HA就是为了解决上述问题。他可以在同一个集群中运行两个NameNode,其中一个处于活动那个状态(active),另一个处于备用状态(standby),且只有活动状态的NameNode可以对外提供读写服务。当活动状态的NameNode崩溃时,HDFS集群可以快速切换到备用的NameNode,这样也就实现了故障转移功能,保证了高可用。

HDFS HA架构原理

为了能够实现实时无缝的进行故障切换,需要让备用NameNode的状态保持与活动NameNode同步,即元数据信息同步。

因此,两个NameNode都需要一组名为JournalNode的独立守护进程进行通信。当活动状态的NameNode的元数据有任何修改时,会将修改记录持久地记录到大多数的JournalNode中,备用NameNode不断监视JournalNode并读取变更信息,以便将变化应用于自己的命名空间。

这种实现方式称为QJM(Qurom Journal Manager),使用2N+1台JornalNode存储元数据信息,当活动NameNode向QJM写入信息时,只要多数(≥N+1)JornalNode返回成功,即可认为该次数据写入成功,以此保证数据高可用性。

QJM集群最多容忍N台计算机宕机,多于N台则写数据失败。此外,还需要备用NameNode拥有关于集群中块位置的最新信息。DataNode配置两个NameNode的位置,并将块位置信息和心跳发送到这两个位置。

HDFS自动故障转移

虽然系统配备了两个NameNode,但即使活动NameNode出现故障,系统也不会自动触发从活动NameNode切换到备用NameNode的故障转移。

要实现故障自动转移,还需要添加两个组件:ZooKeeper和ZKFailoverController(ZKFC)。

ZooKeeper

主要是为了故障检测和NameNode选举。

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

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

ZKFailoverController(ZKFC)进程

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

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

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

3.基于ZooKeeper的选择:如果本地NameNode是健康的,且ZKFC发现没有其它的节点当前持有znode锁,它将为自己获取该锁。如果成功,则它已经赢得了选择,并负责运行故障转移进程以使它的本地NameNode为Active。故障转移进程与前面描述的手动故障转移相似,首先如果必要保护之前的现役NameNode,然后本地NameNode转换为Active状态。

YARN HA简介

在Hadoop的YARN集群中,ResourceManager负责跟踪集群中的资源,以及调度应用程序(例如MapReduce作业)。在Hadoop 2.4之前,Hadoop集群只有一个ResourceManager,当ResourceManager出现故障,将影响整个集群。YARN HA增加了冗余,即一个活动/备用ResourceManager对,以便可以进行故障转移。

YARN HA架构原理

与HDFS HA类似,同一个时间只有一个ResourceManager处于活动状态,当不启用自动故障转移时,必须手动将其中一个ResourceManager转换为活动状态。可以结合ZooKeeper实现自动故障转移,当活动ResourceManager无响应或故障时,另一个ResourceManager自动被ZooKeeper选为活动ResourceManager。与HDFS HA不同的是,ResourceManager中的ZKFC只作为ResourceManager的一个线程,而不是一个独立的进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值