在绝大多数现代 Hadoop 集群(Hadoop 2.2 及更高版本)的默认配置下,如果 ApplicationMaster (AM) 发生宕机,已经运行完成的 Map 任务是不需要重新跑的。 ResourceManager 会启动一个新的 ApplicationMaster 来接管工作,并恢复之前的作业状态。 以下是具体的原理解释和不同情况的分析: 1. 为什么不需要重新跑?(核心机制:AM 状态恢复) Hadoop MapReduce 具有作业恢复机制(Job Recovery)。 状态持久化: 在作业运行期间,原来的 ApplicationMaster 会将任务的运行状态(包括哪些 Map 任务已经成功完成)持久化到 HDFS 上的作业提交目录中。 Map 输出的存储: 已经完成的 Map 任务,其产生的中间结果数据是保存在运行该任务的 NodeManager 的本地磁盘上的,而不是随着 AM 的崩溃而消失。 AM 重启接管: 当旧的 AM 宕机后,YARN 的 ResourceManager 会检测到,并在另一个节点上启动一个新的 AM。这个新的 AM 启动后,会去 HD...