YARN 即MapReduce V2版本。相比MapReduce V1 它有不少优势: node
1. 分散了jobTracker 的任务。资源管理任务由资源管理器负责,做业启动、运行和监测任务由分布在集群节点上的应用主题负责。这样大大减缓了MapReduce V1中jobTracker 单点瓶颈和单点风险的问题,大大提升了集群的扩展性和可用性。
编程
2.在MapReduce V2中ApplicationMaster是一个用户可定制的部分,所以用户能够针对编程模型编写本身的应用主题程序。这样大大扩展了MapReduce V2 的适用范围。app
3.在资源管理上使用Zookper实现故障转移。当资源管理故障时,备用资源管理器将根据保存在ZooKeeper中的集群状态快速启动。MapReduce V2支持应用程序指定检查点。这就能保证应用主题在失败后能迅速根据hdfs上的状态的状态重启。这两个措施大大提升了MapReduce V2的可用性。ide
4.集群资源统一组织成资源容器,而不像在MapReduce V1中Map池和Reduce池有所差异。这样只要有任务请求资源,调度器就会将集群中的可用资源分配给请求任务,而无关资源类型。这就大大提升了资源的利用率。spa
其实YARN还有不少优势,在这里就不尽兴一一列举。主要说一下YARN的工做流程。3d
YARN 具体由哪些部分组成:blog
YARN共有ResourceManager、NodeManager、JobHistoryServer、Containers、Application Master、job、Task、Client组成。进程
> Resource Manager: 一个Cluster 只有一个,负责资源调度、资源分配等工做。内存
> JobHistory Server: 负责查询job运行进度及元数据管理。资源
> nodemanager:运行在datanode节点,负责启动Application和对资源的管理。
> Containers: Container经过ResourceManager分配。包括容器的cpu、内存等资源。
> Application master:通俗来讲Application master 至关于包工头,Resource Manager 至关于经理。Resource Manager 首先将任务给Application master,而后Application master 在将Resource manager的指示传达给各个 nodemanager(至关于工人)进行干活儿。每一个application只有一个Applicationmaster,运行在node manager节点,Application master是由Resource manager指派的。
> job:一个mapper、一个Reducer或一个进程的输入列表。job也能够叫作Application。
> task:一个具体作mapper或Reducer的独立的工做单元。task运行在nodemanager 的Container中。
> client:一个提交给Resource manager的一个Application程序。
已经知道了YARN由哪些工做单元组成,接下来就来讲说一个job时如何进行处理的总体流程。
用户向YARN中提交程序/做业,其中包括Application Master启动、ApplicationMaster的命令及用户程序等;ResourceManager为做业分配第一个Container,并与对应的nodemanager通讯,要求它在这个Container中启动改做业的Application master;Applicationmaster首先向Resourcemaster注册,这样用户能够直接经过Resourcemanager查询做业的运行状态,而后它将为各我的物申请资源并监控任务的运行状态,知道运行结束;Application经过RPC请求向Resourcemanager申请和领取资源。
而后Applicationmaster 要求指定的nodemanager 节点启动任务。
启动以后,去干Resource Manager 指定的map tesk。
等Map task干完以后,通知application master。而后application master 去告知resouce manager。接下来Resource manager 分配新的资源给application master,让它找人干其它的活儿。
接下来Application master 通知nodemanager启动新的Container准备干活儿。该活儿的输入是map task结束的输出。
等各个节点上的Reduce task 都干完了,将干活儿的nodemanager的任务结果进行同步。作最后的reduce任务。
经过图解能够更清楚的了解整个 YARN的工做流程。