转载:https://blog.csdn.net/xuejingfu1/article/details/52801140
MapReduce在YARN上被执行。以下内容涉及的task均是指map tasks或者reduce tasks.
YARN的基本思想:是将资源管理和作业的调度/监控相分离,使它们运行在不同的守护进程中。
该思想是为了达到:有一个全局的ResourceManager以及每个Application独有的ApplicationManager。
一个Application可能是单个job,也可能是一DAG(有向无环图)的jobs.
ResourceManager和NodeManager组成了数据计算框架。ResourceManager有最高权威,它可以在系统中的所有Applications之间仲裁资源的归属。
NodeManager是每个工作节点的框架代理,负责containers、监控他们的资源(cpu,memory,disk,network)使用情况并把这些信息report给ResourceManager/Scheduler
每个Application的ApplicationManager实际上是一个框架具体的库,其任务是从ResourceManager申请资源,并和NodeManager一起来执行、监控tasks。
ResourceManager有两个主要的组件:Scheduler(调度器)和ApplicationsManager(应用管理器)
Scheduler负责分配资源给各种运行着的applications,这些applications受容量、排队等常规情况的限制。
就Scheduler不监控、跟踪application的状态而言,可以说它是一个纯粹的Scheduler.
当然,它也不保证在application故障或硬件故障时重启那些失败的tasks.
Scheduler基于applications的需求来执行他的调度功能(scheduling function);
它这样做是基于资源容器(resource Container)的抽象概念,资源容器整合了多种元素:内存、cpu、磁盘和网络等资源。
Scheduler有一个可插拔的政策(pluggable policy),负责在各种queues、applications等之间给集群资源分区。当前的CapacityScheduler和FairScheduler就可以作为一些插件的例子。
ApplicationsManager负责接收job的提交,申请第一个container来执行当前application具体的A