在 Hadoop YARN 中,当 Active ResourceManager (RM) 宕机并重启(或发生主备切换)时,恢复之前正在运行的作业状态的核心机制被称为 Work-Preserving RM Restart(保持工作的 RM 重启)。这项特性自 Hadoop 2.4 引入,确保了 RM 的重启对正在运行的应用程序(如 MapReduce、Spark、Flink 作业)是透明的,不会导致正在执行的任务失败。 YARN 恢复作业状态的过程是一个多方协作的过程,主要依赖于 状态存储(State Store)、NodeManager (NM) 的心跳汇报 以及 ApplicationMaster (AM) 的重新同步。 以下是详细的恢复流程和原理解析: 1. 核心基础:状态的持久化 (RMStateStore) ResourceManager 在正常运行时,不会把所有细粒度的状态(比如每一个 Container 的状态)都存下来,因为那样开销太大。它只会把最核心的元数据持久化到外部存储(通常是 ZooKeeper,也可以是 HDFS 或 LevelDB)中。 持久化的信息包...