YARN的容错机制

MRv1中采用的Master/Slave架构,存在单点故障问题,作为分布式系统,YARN具备高容错性,各个服务组件的容错机制如下:

  • ApplicationMaster容错:RM监控AM的运行状态,一旦发现它运行失败或者超时,就会重新分配资源并启动它,启动之后AM内部的状态如何恢复由自己保证,比如MRAppMaster在作业运行过程中将状态信息动态记录到HDFS上,一旦出现故障重启后,它能够从HDFS读取并恢复之前的运行状态,减少重复计算带来的开销。
  • NodeManager容错:NM超时没有心跳,则RM认为它死掉,会将上面的Container状态置为失败,并告诉对应的ApplicationMaster,以决定如何处理这些Container中运行的任务
  • Container容错:如果AM在一定时间内未启动分配到的Container,则RM会将该Container状态置为失败并回收它;如果一个Container在运行过充中,因为外界原因导致运行失败,则RM会转告对应的AM,由AM决定如何处理
  • RM容错:至关重要,接下来介绍

Hadoop HA基本框架

为了解决单点故障问题,Hadoop2.0中的HDFS和YARN均采用了基于共享存储的HA解决方案,即Active Master不断将信息写入到一个共享存储系统,而Standby Master则不断读取这些信息,以与Active Master的内存信息保持同步,当需要主备切换时,选中的Standby Master需先保证信息完全同步后,再将自己的角色切换至Active Master。

常用的共享存储系统:

  • zookeeper:针对大型分布式系统的可靠协调系统,提供包括统一命名服务、配置管理、集群管理、共享锁和队列管理等。
  • NFS(network file system)
  • HDFS
  • QJM:(Qurom Journal Manager),基本原理是用2N+1个节点存储数据,每次有大多数(≥N+1)节点成功 写入数据就认为该次些成功,并保证数据高可用,该算法最多容忍N台机器挂掉,如果多于N台挂掉,则这个算法失效。

YARN HA采用的是基于Zookeeper的方案,MRv1采用的是基于HDFS的方案。

尽管共享存储不同,但是HA架构相同,均分为手动模式和自动模式。

手动模式
在这里插入图片描述

自动模式
在这里插入图片描述
自动模式的组件构成:

  • MasterHADaemon:和Master服务运行在同个进程中,可接收外部RPC命令,以控制Master服务的启动和停止
  • SharedStorage:共享存储系统,Active Master将信息写入共享存储系统,而Standby Master则读取该信息以保持与Active Master的同步。
  • ZKFailoverController:基于ZK实现的切换控制器,由ActiveStandbyElector和HealthMonitor两个核心组件构成,ActiveStandbyElector负责与ZK集群交互,通过尝试获取全局锁,判断所管理的Master是进入Active还是进入Standby状态;HealthMonitor负责监控各个活动Master的状态,以根据它们状态进行状态切换
  • zookeeper:通过维护一把全局锁控制整个集群有且仅有一个Active Master,如果SharedStorge采用了Zookeeper,则会记录一些其他状态和运行时信息。

解决HA问题需要考虑以下几个问题

(1)脑裂问题
脑裂指主备切换时,由于切换不彻底或者其他原因,导致客户端和slave误以为出现两个Active Master,最终使得整个集群处于混论状态,通常采用隔离(fencing)机制解决。解决脑裂问题从三个方面考虑:

  • 共享存储隔离:确保只有一个Master往共享存储里写数据
  • 客户端隔离:确保只有一个Master可以相应客户端的请求
  • slave隔离:确保只有一个Master可以向slave下命令。

(2)切换对外透明
保证整个切换对外透明,保证所有客户端和slave自动重定向到新的Active Master,通常是通过若干次尝试连接旧Master不成功后,重新尝试连接新Master完成的,有一定延迟。

YARN HA实现

YARN将共享存储系统抽象为RMStateStore(一个Java接口),以保存恢复RM所必须的信息:

  • Application状态信息ApplicationState。包含应用程序提交描述信息,提交时间,拥有者三个字段
  • Application对应的每个ApplicationAttempt信息ApplicationAttemptState。包含attemptId、所在Container的信息masterContainer、安全Token三个字段
  • 安全令牌相关信息。

RM不会保存已经分配给AM的资源信息和每个NM的资源使用信息,这些都通过 相应的心跳机制重构出来,所以RM HA是轻量级的。

RM提供了四种RMStateStore实现:

  • NullRMStateStore(不存储任何状态信息,在不启用恢复机制时,它是默认实现的)
  • MemoryRMStateStore(将状态信息保存到内存中,启用恢复机制时,它是默认实现的)
  • FileSystemRMStateStore(状态信息保存到HDFS中)
  • ZKRMStateStore(状态信息保存到ZK上)

YARN HA采用基于ZKRMStateStore的共享存储方案。

具体的自动主备切换,后面阅读HDFS书籍也有,到时候引过来。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值