说明

  1. Yarn的重启恢复机制保证了作业在Yarn启动完成后在用户无感知的情况下还能继续运行完成

  2. Yarn重启恢复是经历了两个阶段的发展,

    1. 第一阶段:Non-work-preserving RM restart(hadoop2.4.0)
    2. 第二阶段:Work-preserving RM restart(hadoop2.6.0)

Non-work-preserving

  1. 当客户端提交应用程序,RM会将一些信息保存到state-store中供恢复使用,state-store是一种可插拔式的存储(ZK/Hadoop/Leveldb)

    1. RM会将应用程序的元数据(ApplicationSubmissionContext)相关信息保存下来
    2. 任务运行完成后还会保存任务运行完成后的最终状态(failed / killed / finished)保存下来
    3. 最后还会将一些credentials tokens等Kerberos相关的安全凭证保存下来
  2. RM重启后,客户端和NodeManager会一直轮询RM,直到RM状态变为active,然后RM会通过心跳发送re-sync命令给所有的NM,NM接受到re-sync这条命令后会kill掉自己管理的所有Container,然后作为一个新的NM重新注册到RM中

  3. RM发送完re-sync后会去加载state-store中保存的数据,然后重新提交state-store中保存的应用程序,处于failed / killed / finished的应用程序不会被重新提交

    Work-preserving RM restart

  4. 在hadoop2.6.0版本中增强了该特性,即RM不需要像在第一阶段那样杀死AM并从头开始运行应用程序

  5. NM在接受到re-sync命令后会继续管理自己节点所在的container,在重新注册的时候会把container信息汇报上去

  6. RM在收到container信息后 会重新构建container实例以及调度相关的信息

  7. 同时ApplicationMaster会将未完成的资源请求 在重新发送给RM