一文搞懂 YARN 中 ApplicationMaster(AM)核心作用
前言很多初学 Hadoop2.0 的同学分不清 RM、NM、AM 三者职责面试高频考题MR 作业运行时 ApplicationMaster 到底干什么YARN 彻底抛弃 MRv1 的 JobTracker把资源调度和作业调度拆分而ApplicationMasterMR 场景下叫 MRAppMaster是每一个 MapReduce 作业专属 “包工头”全权管理本次作业全生命周期。本文结合 WordCount 单词统计实例通俗易懂拆解 AM 四大核心职能。一、YARN 三大核心组件分工先理清ResourceManager (RM)集群总资源大管家全局统一管理所有服务器 CPU、内存接收所有应用的资源申请统一分配 Container 容器资源不关心业务 Map/Reduce 逻辑。NodeManager (NM)单节点管家管控本机资源接收 AM 指令启动容器、监控本地任务运行状态定时向 RM 上报心跳。ApplicationMaster (AM)单个作业包工头每提交 1 个 MR 作业集群就会启动 1 个独立 AM 进程只对当前这一个作业负责所有 Map、Reduce 任务全由它统筹调度。二、ApplicationMaster 四大核心作用1. 向 RM 批量申请作业所需 Container 资源AM 启动后会根据 Input 文件切片数量、Reduce 任务数量计算本次作业一共需要多少个容器持续和 RM 通信申请 CPU 内存资源。 RM 空闲资源充足时批量分配对应 Container 返还给 AM。2. 二次拆分资源分配给 Map/Reduce 任务RM 只负责粗粒度下发一批容器不会区分 Map、Reduce AM 拿到容器后做二次调度自主划分哪些容器跑 MapTask、哪些跑 ReduceTask。3. 和 NodeManager 通信下发任务启动指令AM 拿到分配好的容器后根据容器所在节点远程通知对应 NM在容器内启动 Map 或 Reduce 计算任务自动加载程序 Jar、HDFS 输入文件。4. 全程监控任务自动容错重试所有 Map/Reduce 任务会定时向 AM 上报运行进度 一旦任务报错、节点宕机、容器资源不足崩溃AM 立刻感知重新向 RM 申请新容器重启失败任务保证作业最终跑完。三、WordCount 实战举例全程看懂 AM 工作流程场景执行 WordCount 单词统计程序输入文件切割后生成10 个 Map 任务手动配置 2 个 Reduce 任务整个流程 AM 完整操作如下客户端提交 WordCount Jar 包到 YARNRM 先分配 1 个容器启动 MRAppMasterAM 进程AM 启动后解析作业配置10 Map 2 Reduce合计需要 12 个 Container向 RM 发起资源申请RM 扫描集群所有 NM 空闲资源一次性下发 12 个空闲容器给 AMAM 做二次资源划分拿出 10 个容器分配给 10 个 MapTask剩余 2 个容器留给 ReduceTaskAM 遍历 10 个 Map 对应的容器所在节点远程通知对应 NM启动 Map 任务读取 HDFS 文本切割单词输出单词,1所有 Map 运行期间AM 实时接收每个 Map 的进度上报若某个 Map 崩溃AM 立刻重新申请容器重启该 Map全部 Map 执行完成后AM 再通知 2 个容器启动 Reduce拉取 Map 输出数据分组求和Reduce 运行过程同样受 AM 监控异常自动重试所有 MapReduce 全部执行完毕AM 向 RM 注销当前应用释放所有容器资源作业结束。四、补充关键知识点避坑一个 AM 只管理当前这一个作业互不干扰同时提交多个 MR 任务集群会生成多个独立 AM。RM 只做资源分配完全不懂 Map/Reduce 业务逻辑任务调度、容错全部交给 AM这是 YARN 对比 MRv1 最大优化解决 JobTracker 单点瓶颈。Container 是 YARN 最小资源单位封装 CPU、内存一个容器同一时间只能跑 1 个 Map/Reduce 任务。AM 本身也运行在一个独立 Container 中如果 AM 所在节点宕机RM 会重新分配容器重启 AM作业不会直接失败。五、面试简答背诵版在 Hadoop2.0 YARN 框架运行 MR 作业时ApplicationMaster 作用作为作业专属调度进程向 RM 申请本次 Map、Reduce 所需的 Container 容器资源RM 分配资源后AM 对容器二次划分分别分配给 MapTask、ReduceTask和各节点 NodeManager 通信下发指令启动对应计算任务实时监控所有任务运行状态任务失败时重新申请资源自动重启实现作业容错。结尾本文从理论 WordCount 实例结合把 AM 的核心职能讲透不管是课堂实验、笔试面试都能直接使用。如果需要 YARN 完整提交流程、RM/NM 详解文章可以留言