之前看了那么些源码, 大致对整个Yarn的运行过程有了一个了解, 总结一下
首先每个Yarn集群都有一个Resource Manager 以及若干个NodeManager
Resource Manager主要有两个对象, 一个就是Scheduler, 还有一个就是Applications Manager ASM
Scheduler有FIFO和Fair等, 主要作用就是根据Node Manager的资源使用状况来分配container。
当然还有一种Uber模式, 具体就是满足7个条件后就会只用一个container去跑整个Job
Applications Manager主要是管理所有的Application Master的, AM创建后就和ASM注册, 后面有各种资源的请求都会通过ASM来进行
NodeManager上面会运行AppMaster, 其实AM就是一个特殊的Container, Job提交后会先创建一个AM的container, 之后通过这个AM Container去协调整个Job的运行。
NM会和Resource Manger进行心跳, 这样RM就知道每个NM的资源状况, 当有container的申请的时候就会找对应的NM去分配container, 其顺序为:
1.data所在的NM优先
2.如果1没有, 那么找同一个机架 (rack)上的NM
3.如果1,2 都没有, 那么就在集群上面随机寻找一个
ApplicationMaster是为每个Job创建的一个管理container。 他对这个Job的情况进行资源申请, container的管理, 任务的管理(和NM通信进行启动停止重跑等)
他也会和RM通信, 去要求分配各种资源
container本身的话其实就是在Node Manager上面的一个资源包, 由 Resource Manager来分配由AM来启动, 在NM上面运行。
整个YarnRunner的运行过程用下面的图来说明一下 (借用网络用图):
1.Client 提交Job Resource Manager接收
2.Resource Manager启动第一个Container--Application Master, 用来管理整个Job 以及后续的资源申请,任务控制
3.Application Master启动后向ASM注册
4.AM计算所需要的资源量, 通过ASM向RM进行申请
5.RM提供所有container的location后, AM去要求NM启动所有的container
6.NM启动container
7.每个任务向AM汇报运行情况与状态
8.Job运行完后AM向ASM注销关闭
YARNRunner的运行原理总结
猜你喜欢
转载自humingminghz.iteye.com/blog/2333137
今日推荐
周排行