前置组件说明: Client(客户端提交程序)、ResourceManager (RM)、两大子模块:调度器 Scheduler + 应用管理器 AMM; NodeManager (NM,各节点资源代理)、ApplicationMaster (AM,当前作业总管)、Container (资源容器)
步骤 1:客户端提交 MR 作业
用户在 hadoop1 终端执行 wordcount 命令:
hadoop jar xxx.jar wordcount /input /output
- Client 读取配置文件(core/mapred/yarn-site),解析输入 HDFS 路径、Map/Reduce 逻辑;
- Client 读取 HDFS 输入文件,根据块大小拆分 InputSplit 分片,Map 任务数量 = 分片数量;
- Client 向 ResourceManager 的ApplicationsManager发送作业提交请求,携带作业描述、所需资源、程序 jar 包。
步骤 2:RM 分配第一个 Container,启动该作业 AM
- RM 的 Scheduler 调度器查看集群所有 NodeManager 空闲内存、CPU;
- 分配最小 1 个容器 Container,专门用来运行 MRAppMaster(MR 专属 ApplicationMaster);
- RM 远程通知对应节点的 NodeManager,拉起容器,启动 AM 进程;
- AM 启动完成后,主动向 ResourceManager 注册自身,建立长连接,后续作业状态客户端可通过 RM 查询。
步骤 3:AM 计算总资源需求,向 RM 批量申请 Map、Reduce 容器
- AM 解析本地分片信息,算出需要 N 个 MapTask、R 个 ReduceTask;
- AM 向 RM 的 Scheduler 发送资源申请,请求 N+R 个 Container;
- 申请资源时附带数据本地性偏好:Map 任务优先分配到存放对应 HDFS 块的节点,减少网络 IO。
步骤 4:RM 调度分配对应容器,返回资源列表
- Scheduler 遍历所有 NM 资源,按照本地性优先策略挑选空闲节点;
- 返回一批「节点 + 容器」资源给 AM,完成第一层全局资源分配;
- RM 不会细分哪个容器跑 Map、哪个跑 Reduce,只把整块资源交给 AM。
步骤 5:AM 进行资源二次分配
AM 拿到 RM 下发的全部容器,内部拆分分配:
- 拿出 N 个容器分配给所有 MapTask;
- 剩余 R 个容器分配给 ReduceTask;
- 这就是将资源进一步分配给内部任务(二次分配)。
步骤 6 AM 和对应 NodeManager 通信,启动任务容器
AM 分别和分配到节点的 NM 建立通信,下发指令:
- NM 接收指令,在本机 Container 内启动 Map 任务;
- Map 读取本地 HDFS 数据执行计算,输出中间键值对存本机
tmp目录; - 所有 Map 运行完毕后,AM 再通知 NM 启动 Reduce 任务;
- Reduce 通过 Shuffle 服务,从所有 Map 所在节点拉取中间本地数据,排序聚合。
步骤 7:任务运行状态持续上报
- Map/Reduce 每间隔一段时间向 AM 发送心跳,上报运行进度;
- NodeManager 定时向 RM 上报本机资源占用、容器存活状态;
- 若任务卡死 / 崩溃:AM 会重新向 RM 申请新容器,重启失败任务;
- 若 AM 进程意外挂掉:RM 的 ApplicationsManager 会自动重启 AM,恢复作业。
步骤 8:所有 Map、Reduce 执行完毕
- Reduce 完成聚合计算,最终结果写入 HDFS 指定 /output 目录;
- AM 确认全部任务执行成功,向 ResourceManager 发送作业完成通知。
步骤 9:资源全部释放,作业结束
- RM 收到完成信号,通知所有 NM 销毁所有 Container,释放内存、CPU 资源;
- 客户端可通过 hdfs 查看 /output 下统计结果;
- 整个应用生命周期结束。
配套核心知识点对应
- 两层调度: 一层:RM 给 AM 分配批量容器; 二层:AM 拆分资源分给 Map/Reduce(二次分配);
- 节点分配规则:Map 优先数据本地节点,Reduce 无本地性限制;
- 容错分工:任务挂由 AM 重启,AM 挂由 RM 重启;
- 中间数据:Map 输出只存在任务本地磁盘,不上 HDFS,依靠 NM 的 shuffle 服务跨节点传输。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/2301_79980425/article/details/162611345




