yarn基本原理图
2017-11-24 09:25:27 0 举报
yarn基本原理
作者其他创作
大纲/内容
5、资源容量
ResourceManager
ApplicationMaster和NodeManager的交互
运行在专有机器上,拥有所有集群资源主要、全局视图。RM可以从运行中的应用程序中收回资源。不同于hadoop1.0中的对MR槽位做静态分配YARN将整个集群的资源看做一个资源池。
1、1、客户端Application请求2、2、应答带回ApplicationID3、Container Launched Context(CLC)提供了资源请求(内存、CPU)、作业文件、安全令牌、以及在节点上启动ApplicationMaster需要的其他信息。4、ResourceManager为ApplicationMaster调度一个可用的Container 0,如果此时有其他的Container可以请求,ResourceManager会联系NodeManager启动ApplicationMaster,同时建立ApplicationMaster的RPC端口和用于跟踪的URL监控应用程序的状态。5、在4中的注册请求响应中,ResourceManager会发送关于集群最小最大容量信息,ApplicationMaster需要决定如何使用6、根据5中的信息,ApplicationMaster会请求一定量的Container7、ResourceManager根据调度策略,尽可能最优的为ApplicationMaster分配Container资源,作为请求的应答发送给ApplicationMaster
NodeManager
通常ApplicationMaster需要多台服务器处理完成一个作业,AM向RM发送资源请求,请求中包含本地化偏好、Container的属性,当RM把一个资源调度给一个AM时候会在RM上生成一个对应的租约,供AM通过随后的心跳来获取。被分配的运行中的Container通过应用程序特定协议与AM通信。从而YARN实现了对Container的监控和生命周期管理的基础框架
杀掉Container动作
作业生命周期的管理者
ApplicationMaster
监控Container的生命周期、Container资源使用(内存、CPU),跟踪节点健康状况,管理日志和不同应用程序的附属服务。启动的时候NodeManager向ResourceManager注册,发送包含自身状态的心跳。NodeManager主要目标是管理RM分配给他的Container。NM可以杀死由RM指定的Container。
Container
与运行在每个节点上的NodeManager通过心跳交互,ResourceManager依赖NodeManager来维护集群的全局视图
ApplicationManager
Container是单个节点上如RAM、CPU、磁盘等物理资源的集合。单个节点上可以有多个Container。系统中每个节点可以认为是内存CPU最小容量的多个Container组成。ApplicationMaster可以请求任何Container来占据最小容量的整数倍资源。 Container由ApplicationMaster向ResourceManager申请的,由ResouceManager中的资源调度器异步分配给ApplicationMaster。Container的运行是由ApplicationMaster向资源所在的NodeManager发起的。ApplicationMaster通常被称作Container 0 。另外,一个应用程序所需的Container分为两大类,1、 运行ApplicationMaster的Container:这是由ResourceManager(向内部的资源调度器)申请和启动的,用户提交应用程序时,可指定唯一的ApplicationMaster所需的资源;2、运行各类任务的Container:这是由ApplicationMaster向ResourceManager申请的,并由ApplicationMaster与NodeManager通信以启动之。
当Container启动时,所有数据文件,可执行文件,依赖文件都被拷贝到节点的本地存储上。依赖文件可以被运行中的应用程序的Container共享。一旦Container都被启动,ApplicationMaster就可以检查他们的状态。ResourceManager不参与应用程序的执行,只处理调度和监控其他资源。ResourceManager可以命令NodeManager杀死Container。在ApplicationMaster通知ResourceManager自己完成了、或者ResourceManager需要为另一个应用程序抢占资源、或者Container超出资源限制时候都可以发生啥词Container事件。当Container被杀死之后NodeManager会清理本地工作目录。作业结束之后ApplicationMaster通知ResourceManager该作业成功完成,然后ResourceManager通知NodeManager聚集日志并且清理Container专用文件。如果Container没有退出,NodeManager也可以接受指令杀死剩余的Container。NodeManager与Container的细节参照上图Container与ApplicationMaster保持通信,告知任务过程。当应用程序完成后,Container被停止,ApplicationMaster从ResourceManager中注销
Fair调度器,每个应用都属于某一个队列。YARN Container的分配策略是选择最少资源的队列,在这个队列中,再选择使用最少资源的应用程序。一个新特性是支持层次化队列。
传递Container给NodeManager来启动
7、分配Container
1、客户端Application请求
发送CLC启动Container
ApplicationMaster 负责与 ResourceManger 协商资源,并且与NameManager 协同工作执行监控Container 以及他们的资源消耗,每个应用都有自己的ApplicationMaster 实例
3、Application Submission Context包含ApplicationID,用户名,对列名等以及Container Launched Context中的资源请求、作业文件、安全令牌等。
yarn组件
ResourceManager 和 NodeManager 创建了集群统一的计算基础设施
ResourceManager 为 ApplicationMaster分配一个Container,并且负责在节点上拉起Container,ApplicationMaster通常被称为Container0
状态响应
Client
用户job
持续心跳:ApplicationMaster将心跳和进度信息通过心跳发送给ResourceManager,心跳中,还可以请求和释放Container
是每个用户作业的主进程,负责管理作业的生命周期:动态增加减少Container(与ResourceManager协商增加,或者释放。如当Map任务启动先请求一定数量的Map Container,Map任务结束时候释放这些Container,并且请求更多的Reduce Container)、管理执行流程(如MR)。因为ResourceManager和NodeManager的通信都使用可扩展的网络协议-谷歌Protocol Buffers,所以ApplicationMaster被设计成可以运行人和编程语言实现的用户程序。ApplicationMaster通常被称作Container 0 。
提交
请求Container资源
6、请求Container
客户端发给Res的资源请求示例
启动
发送心跳状态
Schedule
4、启动客户端ApplicationMaster,ApplicationMaster向ResourceManager注册
Scheduler有资源的话,程序应用状态由accepted转成running
ResourceManger
完成
FIFOCapacityFair(常用)
可插拔的调度器Scheduler
ApplicationMaster
好网站:http://www.aboutyun.com/thread-11149-1-1.html
2、应答带回ApplicationID
0 条评论
下一页