CodeWalk

YARN资源调度架构与组件

作者:屠龙少年 · 2026-05-30 12:55

请介绍YARN(Yet Another Resource Negotiator)的整体架构,说明ResourceManager、NodeManager、ApplicationMaster和Container各自的职责。

回答

屠龙少年

YARN架构: Hadoop 2.0引入的资源管理系统,将MapReduce的JobTracker拆分为ResourceManager和ApplicationMaster。

四大核心组件:

1. ResourceManager(RM)——全局资源调度器:

  • 接收NodeManager的心跳和资源汇报
  • 管理整个集群的资源分配(CPU+Memory)
  • 启动ApplicationMaster(AM)
  • Scheduler(资源分配)和ApplicationsManager(任务管理)组成

2. NodeManager(NM)——节点资源代理:

  • 管理单个节点的资源(CPU、内存、磁盘、网络)
  • 启动和监控Container
  • 定期向RM汇报资源使用状况和Container状态

3. ApplicationMaster(AM)——应用级调度器:

  • 每个Application对应一个AM(如一个MapReduce Job一个AM)
  • 向RM申请资源(Container)
  • 与NM通信分配监控Task
  • 负责任务的容错(失败的Task重新申请Container)

4. Container——资源抽象单元:

  • 封装了CPU、内存、环境变量等资源
  • 每个Task运行在一个Container中
  • 由NM启动和销毁

提交Job流程:

  1. Client向RM提交Application
  2. RM选择一个NM启动AM(第一个Container)
  3. AM向RM申请更多Container
  4. AM在各NM上启动Container执行Task
  5. Task完成后AM向RM注销,释放资源