深入理解 Hadoop MapReduce 调度原理与 YARN 架构


深入理解 Hadoop MapReduce 调度原理与 YARN 架构

作者:
标签:大数据、Hadoop、YARN、MapReduce、调度器


一、前言

在大数据领域,Hadoop 是最重要的分布式计算平台之一。随着数据规模的增长,Hadoop 从 1.x 到 2.x 发生了巨大变革,核心就是引入了 YARN 资源调度框架。本文将结合图示,详细梳理 Hadoop MapReduce 的调度原理与 YARN 的工作机制。


二、Hadoop 1.x:经典 MapReduce 调度原理

1. 体系结构

分配任务
分配任务
执行 Map/Reduce
执行 Map/Reduce
作业提交
JobTracker
TaskTracker1
TaskTracker2
MapReduceTask1
MapReduceTask2
  • JobTracker:集群主控节点,负责作业切分、调度与资源分配。
  • TaskTracker:工作节点,负责接收和执行 JobTracker 分配的任务。

2. 调度流程

  1. 作业提交:用户将 MapReduce 作业提交给 JobTracker。
  2. 切分任务:JobTracker 切分为若干 Map/Reduce 任务。
  3. 资源调度:JobTracker 根据资源空闲情况,将任务分配给 TaskTracker。
  4. 任务执行:TaskTracker 启动任务,并向 JobTracker 汇报进度。
  5. 任务重试:失败的任务由 JobTracker 重新调度。

3. 调度器

  • FIFO Scheduler:先进先出,简单但缺乏灵活性。
  • Capacity Scheduler / Fair Scheduler:后续加入,提升多租户与公平性。

缺点

  • JobTracker 单点瓶颈,影响集群扩展性与可靠性。

三、YARN:Hadoop 2.x 的资源调度革命

1. YARN 架构图

节点
集群主控
分配 Container
分配 Container
启动 AM
申请资源
分配 Container
启动任务
启动任务
NodeManager 1
NodeManager 2
ResourceManager
作业提交
ApplicationMaster
Container 1
Container 2
主要组件
  • ResourceManager(RM):全局资源调度与分配中心。
  • NodeManager(NM):每台节点的本地资源与任务管理者。
  • ApplicationMaster(AM):每个应用独有,负责作业的生命周期管理和任务调度。
  • Container:资源分配的最小单位,运行具体任务进程。

2. YARN 调度与执行流程

  1. 作业提交:用户将作业提交到 ResourceManager。
  2. 启动 AM:RM 分配一个 Container 启动 ApplicationMaster。
  3. 资源申请:AM 根据任务需要,向 RM 申请更多 Container。
  4. 任务分配与执行:RM 分配 Container,NM 启动 Map/Reduce 任务。
  5. 任务监控与重试:AM 监控任务状态,失败自动重试。
  6. 作业完成:AM 通知 RM,释放资源并退出。
流程图(文字版)
[作业提交] 
    ↓
[ResourceManager 启动 ApplicationMaster] 
    ↓
[AM 向 RM 申请 Container] 
    ↓
[NodeManager 启动 Container,执行 Map/Reduce 任务] 
    ↓
[AM 监控任务状态,失败自动重试] 
    ↓
[所有任务完成,AM 向 RM 报告完成] 
    ↓
[资源释放,作业结束]

四、YARN 调度器原理详解

1. FIFO Scheduler(先进先出)

  • 原理:作业按提交顺序排队,先到先服务。
  • 优点:实现简单。
  • 局限:不适合多用户、资源争抢场景。

2. Capacity Scheduler(容量调度器)

  • 原理:将集群资源划分为多个队列,每个队列有资源配额和保障。
  • 资源未用满:队列间可临时借用,提高资源利用率。
  • 适用场景:大企业多部门共享集群。

3. Fair Scheduler(公平调度器)

  • 原理:动态分配,保证各作业/用户资源占用均衡。
  • 特点:支持资源池、作业优先级。
  • 适用场景:多作业并发、追求公平。

4. 资源分配机制

  • Scheduler 只分配 Container,不直接启动任务。
  • ApplicationMaster 获得 Container 后负责任务执行。
  • 调度时考虑数据本地性、作业优先级、队列资源限制等。

五、MapReduce on YARN:作业生命周期

客户端 ResourceManager NodeManager ApplicationMaster Map/Reduce 任务 提交作业 分配 Container 启动 AM 启动 AM 申请 Container 分配 Container 启动 Map/Reduce 任务 汇报进度/状态 作业完成通知 资源释放 客户端 ResourceManager NodeManager ApplicationMaster Map/Reduce 任务

主要阶段

  1. 作业提交:客户端提交作业,上传 jar 包、配置等。
  2. AM 启动:RM 分配 Container,NM 启动 AM。
  3. 资源申请与分配:AM 向 RM 申请运行任务所需的 Container。
  4. 任务执行:NM 启动 Container,运行 Map/Reduce 任务。
  5. 任务监控与容错:AM 监控任务状态,失败重试。
  6. 作业完成:全部任务完成后,AM 通知 RM,释放资源。

六、对比与总结

阶段 Hadoop 1.x (MRv1) Hadoop 2.x (YARN)
资源调度 JobTracker 单点负责 ResourceManager + AM 分层
任务管理 TaskTracker NodeManager + Container
调度粒度 Task 为单位 Container 为单位
扩展性 受限,易成瓶颈 高扩展性、支持多框架
调度器类型 FIFO/Capacity/Fair FIFO/Capacity/Fair
  • YARN 彻底分离资源管理与作业调度,提升了系统扩展性与可靠性。
  • 合理选择调度器(如 Capacity/Fair)能大幅提升集群利用率与公平性。

七、结语

Hadoop 的 MapReduce 与 YARN 架构是大数据生态的基石。理解其调度原理与生命周期,不仅有助于优化作业性能,还能帮助我们更好地设计和运营大数据平台。


如果你对某个调度器实现细节、参数优化或集群实践有更深入的问题,欢迎留言交流!


参考资料:

  • Hadoop 官方文档
    https://hadoop.apache.org/docs/

  • Tom White. 《Hadoop权威指南(第4版)》
    ISBN: 9787115475984
    (英文原版:Hadoop: The Definitive Guide, 4th Edition)


你可能感兴趣的:(MapReduce,hadoop,mapreduce,架构,学习方法)