1.Yarn概述
YARN 是 Hadoop2.x 版本中的一个新个性。
在1.x版本中,MapReduce版本承当了过重的工作,包含资源调度,而到2.x版本中,则将资源调度这部分独立进去了,就是Yarn,这使得hadoop更加巩固,领有更好的扩展性,可用性,可靠性。
所以咱们能够晓得,Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台。
2.Yarn 架构
YARN次要由ResourceManager、NodeManager、ApplicationMaster和Container等组件形成。
2.1ResourceManager
ResourceManager 领有零碎所有资源分配的决定权,负责协调和治理整个集群(所有NodeManager)的资源,响应用户提交的不同类型应用程序的解析、调度、监控等工作。
ResourceManager 会为每一个 Application 启动一个 MRAppMaster,并且 MRAppMaster扩散在各个 NodeManager节点。
ResourceManager(RM)次要作用:
1)解决客户端申请;
2)监控NodeManager
3)启动或监控ApplicationMaster
4)调配与调度资源
2.2NodeManager
NodeManager是YARN集群当中资源的提供者,监控应用程序的资源应用状况,通过心跳向集群资源调度器 ResourceManager汇报本人的额状态。
NodeManager监督Container 的生命周期,每个 Container 的资源应用(内存、CPU等)状况,追踪节点健康状况等。
次要作用:
1)治理节点上的资源
2)接管解决ResourceManager的命令
3)执行来自ApplicationMaster的命令
2.3Container
Container 容器是一个形象进去的逻辑资源单位,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。
Container和集群节点的关系是:一个节点会运行多个Container,但一个Container不会跨节点。
每一个应用程序从ApplicationMaster开始,它自身就是一个container(第0个),一旦启动,ApplicationMaster就会增加工作需要,与Resourcemanager协商更多的container,并且能够动静开释和再申请container。
2.4ApplicationMaster
ApplicationMaster负责与scheduler协商适合的container,跟踪应用程序的状态,以及监控它们的进度,ApplicationMaster是协调集群中应用程序执行的过程。每个应用程序都有本人的ApplicationMaster,负责与ResourceManager协商资源(container)和NodeManager协同工作来执行和监控工作 。
Yarn工作流程
大抵流程如下
1)MR程序提交工作,也就是执行这一步
main{
job.waitForCompletion()
}
2)YarnRunner向ResourceManage(RM)r申请一个Application,RM将该应用程序的资源门路返回给YarnRunner。
3)程序拿到资源门路,将运行所需资源提交到hdfs上。
4)程序提交资源完后请运行MrAppMaster。
5)RM将用户的申请封装成一个Task,放到队列中。
6)当NodeManager获取到Task工作,开始创立容器Container,并生成MrAppmaster。
7)Container从HDFS上拷贝资源到本地,MrAppmaster向RM申请运行指定MapTask资源。
8)RM将运行MapTask任务分配到其余NodeManager,NodeManager别离支付工作并创立容器。
9)MR向接管到工作的NodeManager发送程序启动脚本,NodeManager别离启动MapTask。
10) MapTask对数据分区排序,所有MapTask运行结束后,MrAppMaster向RM申请资源,运行ReduceTask。
11) ReduceTask从MapTask获取相应分区的数据。
12)执行结束,MR申请登记。
发表回复