Apache Hadoop NextGen MapReduce (YARN)
MRV2的设计是基于分离JobTracker的主要职能,将以下2个职能放在2个单独的进程中,以前都是在一个(JobTracker)进程中。
1、资源管理
2、Job调度/监控
2个核心概念:
1、全局的资源管理器 global Resource Manager (RM)
2、Per Application 每个应用程序有一个 Application Master (AM)
Application:
一个典型的MR Jobs 或者是一个DAG Jobs.
An application is either a single job in the classical sense of Map-Reduce jobs or a DAG of jobs.
ResourceManager
和
NodeManager (NM) (per-node slave 每个Slave节点都有一个NodeManager 与 Resource Manager通讯)
组成了数据计算框架
ResourceManager负责对集群中所有的Application资源分配。
每个应用有一个ApplicationMaster,实际上,一个特殊的框架库来和ResourceManager协商资源的分配,请求资源。并且和NodeManager交互来执行和监控Tasks。
ResourceManager 有2个组件,Resource Scheduler and ApplicationsManager.
The Scheduler is responsible for allocating resources to the various running applications subject to familiar constraints of capacities, queues etc
调度器职责是 给各种运行中的应用程序对象分配资源,管理队列。
调度器在这里是单纯的资源调度器,它不去监控应用程序的运行状态,不确保会重启失败的task。它只是单纯的应对应用程序的资源请求。
基于Resource Container,是一个将 mem, cpu, disk, network等资源整合的容器。
Scheduler是一个可插拔的政策,将集群的资源分区到不同的资源队列queue,applications里。
当前的资源调度有Capacity调度和FairScheduler调度。
CapacityScheduler支持 hierarchical queues 允许更多的预测和共享集群的资源。
ApplicationsManager职责是接受job的提交,和第一个Container协商来指定ApplicationMaster和对AM提供失败重启策略。
NodeManager是每台机器都有的一个agent,职责是监控container的资源使用情况(cpu, mem, disk, network), 然后汇报给ResourceManager/Scheduler。
每个应用程序只有一个的AM职责是与Resource Scheduler协调合适的Resource Container,监控应用程序执行的状态和进度。