MRAPPMaster向resourcemanager发送周期性的心跳报告。当resourcemanager发现MRAPPMaster故障时,会在一个新的容器(由节点管理器管理)开始一个新的MRAPPMaster实例,新的MRAPPMaster实例可以恢复故障任务的状态,使其不必重复运行,默认是不恢复,可设置。客户端是会通过心跳周期性的向MRAppMaster获取进度轮询,当MRAPPMaster故障,客户端会重新定位新的MRAPPMaster实例位置。
客户端定位MRAPPMaster的过程为:
- 在作业初始阶段,客户端会向resourcemanager询问并缓存MRAPPMaster的位置,使其每次向MRAPPMaster查询时不需要重新载入resourcemanager,但是mrappmaster运行失败,客户端不能获得进度状态时,会重新向resourcemanager询问。
节点管理器运行实败:节点管理器会停止向resourcemanager 发送心跳,并被移除可用节点管理器池
对于resourcemanager,可以通过zookeeper实现HA,避免一个resourcemanager出现单点故障,其脑裂问题是由zookeeper的ACL来实现的。YARN的单点故障指的是ResourceManager单点问题
ResounceManager 负责整个系统的资源管理和调度
- 内部维护了各个应用程序的applicationmaster信息、nodemanager信息、资源使用信息等。
考虑到这些信息绝大多数可以动态重构,因此解决YARN单点故障要比HDFS单点容易很多。
与HDFS 类似
- YARN的单点故障仍然由主备切换的方式完成,不同的是,备节点不会同步主节点的信息,而是在切换之后,才从共享存储系统读取所需信息。是因为YARN resourcemanager内部保存的信息非常少,大部分可以重构,而且这些信息是动态变化的。