YARN(Yet Another Resource Negotiator)是Hadoop 2.0中重要的资源管理系统,YARN的工作机制在于将资源管理与任务调度分离,使得Hadoop的计算框架能够支持不同的应用程序。YARN的架构主要由ResourceManager、NodeManager、ApplicationMaster和Container组成。

ResourceManager:负责整个集群的资源管理与分配,它接受应用程序提交的资源请求并进行资源的协调和分配。ResourceManager中有两个关键组件:

- Scheduler:仅负责资源分配,而不负责监控应用程序的状态和进程。

- ApplicationManager:负责应用程序的启动和生命周期管理。

NodeManager:NodeManager是每个节点上运行的代理程序,负责管理单个节点的资源,并监控每个Container的资源使用情况。它定期向ResourceManager发送心跳报告。

ApplicationMaster:每个应用程序会拥有一个ApplicationMaster,它负责管理该应用程序的生命周期,分配资源并与NodeManager协调任务的执行。

Container:Container是YARN中的最小资源分配单位,YARN的工作机制中,任务被打包成多个Container,由NodeManager分配至集群中的各节点并执行。

YARN的工作机制流程:

1. 用户向ResourceManager提交应用。

2. ResourceManager分配一个Container用于启动ApplicationMaster。

3. ApplicationMaster向ResourceManager申请任务所需资源。

4. ResourceManager将资源分配给ApplicationMaster。

5. ApplicationMaster协调NodeManager在Container中执行任务。

6. NodeManager监控Container的资源使用情况,保证任务顺利执行。