数据岗位面试题更新 2026-08-05

在 Apache Hadoop YARN 架构下,当一个运行中的任务或其容器出现失败时,系统通常采用哪些机制来实现容错和恢复?请具体描述从 ApplicationMaster、NodeManager 到 ResourceManager 各层级常见的故障处理流程与重试策略。

数据系统设计技术原理问题排查Apache Hadoop YARN

考察说明

考查对 YARN 资源管理与任务调度中故障处理机制的理解。

回答思路

  1. 【回答框架 1】YARN 通过 ResourceManager、NodeManager 和 ApplicationMaster 三层协作实现容错。NodeManager 负责监控本节点容器状态,若容器异常退出会向 ResourceManager 上报,并清理资源。ApplicationMaster 负责跟踪任务进度,可向 ResourceManager 请求重新分配容器来重启失败任务。
  2. 【回答框架 2】ResourceManager 本身是高可用架构,通过 ZooKeeper 实现 Active/Standby 切换。当 Active RM 故障时,Standby RM 接管,并通过恢复之前保存的应用状态和容器状态来继续管理集群,避免整个集群中断。
  3. 【回答框架 3】ApplicationMaster 失败时,ResourceManager 会尝试重新启动它,并恢复其运行状态,但这通常需要应用自身支持状态持久化和恢复。对于普通 MapReduce 任务,YARN 会重新拉起 AM,并根据已完成的任务进度继续执行未完成部分。
  4. 【回答框架 4】任务级别的容错往往依赖应用自身机制,如 MapReduce 的推测执行和任务重试。作业会为每个任务设置最大尝试次数,当任务失败超过限制后才会判定作业失败。此外,数据本地性、资源不足等导致的失败,YARN 会尝试在不同节点重新调度容器。
  5. 【回答框架 5】对于流式或长期运行的服务,YARN 支持通过 container 的 restart 策略来自动重启失败的容器,同时可结合资源超时释放、节点健康监测等手段提升整体健壮性。
  6. 【关键点 1】YARN 依赖 AM 重启和任务重试实现应用级容错。
  7. 【关键点 2】ResourceManager HA 通过 ZooKeeper 实现主备切换,保证集群控制面高可用。
  8. 【关键点 3】任务失败处理涉及容器重新分配、资源清理和进度恢复,需应用层配合。