1.先翻译:来自于http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html
MapReduce自从hadoop-0.23经历了一次重构,我们现在称之为MapRecuce2.0(MRv2)或者YARN.
MRv2的基本理念就是分解JobTracker的基本功能,分别是资源管理和任务的调度和监控。MRV2将这两个功能分解成独立的守护线程。该理念拥有一个全局资源管理器(RM),和每一个应用一个应用宿主(AM).一个应用指的是经典MapReduce的一个job(任务)或者任务列表的DAG.(有向无环图)
全局资源管理器和每个从节点的节点管理器(NM)构成了数据计算框架。全局管理器决定了系统中所有应用的资源分配。
每个应用的ApplicationMaster效果上是一个特定的框架实现库,它的任务是和ResourceManager全局资源管理器协调沟通资源,与NodeManager节点管理器配合执行和监控任务。
全局管理器有两个主要组件:Scheduler(调度器)和ApplicationsManage(全应用管理器)
调度器负责向不同应用分配资源,这些应用受制于相同容量、队列限制。调度器只负责调度不负责监控也不负责追踪应用的状态。同样,它不保证重启由于应用错误或硬件戳无而失败的任务。调度器基于各应用实际需求执行调度资源功能,它同样基于一个成为Container的抽象概念,该概念代表了内存,cpu,硬盘,网络等合成在一起的概念。第一版里支持内存。
调度器策略可插拔。该策略负责在不同的队列或应用中分配资源。当前策略主要包括 CapacityScheduler 和FairScheduler
CapacityScheduler支持 hierarchical queues对集群的资源更具有预测性。
ApplicatiionsManager负责接收提交的任务(job),与执行特定应用ApplicationMaster的第一个容器沟通协调,并且提供失败情况下的重启容器的服务
NodeManger是在每台电脑一个框架代理,是执行应用程序的容器。 监控资源利用情况(cpu,内存,硬盘,网络情况)等并同时报告给ResourceManager/Scheduler
每个应用的ApplicationMaster负责与scheduler协调沟通合适的资源,跟踪状态,监控进展。
2.再分析
参考http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/
http://www.csdn.net/article/2013-06-27/2816031-hadoop-yarn
上文中涉及到五个概念,前三个。ResourceManager(RM),NodeManager(NM),ApplicationMaster(AM)
其中,RM又分为Scheduler和ApplicationsManager(APSM)
Master服务器上RM。也就是Scheduler和ApplicationsManager.
Scheduler:协调分配资源;
ApplicationsManger:接收客户端任务,将应用程序分配给具体的ApplicationMaster。重启AM服务。
slave机器上,NM三个职能,是资源容器,监控本地资源,并 向RM的Scheduler汇报工作
AM.两个职能,代表本地应用与RM的Scheduler沟通协调资源,跟踪记录本地任务不同状态和进展
上图中产生了四个Container,两个ApplicationMaster,三个NodeManager.其中一个AM与三个Container打交道,两一个AM和一个Container打交道。除一个NodeManager包含两个Container外,另外都是一对一.同一台slave上的AM和NM可能针对不同的Container