YARN资源调度架构与组件
请介绍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流程:
- Client向RM提交Application
- RM选择一个NM启动AM(第一个Container)
- AM向RM申请更多Container
- AM在各NM上启动Container执行Task
- Task完成后AM向RM注销,释放资源