之前看了那么些源码, 大致对整个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注销关闭
分享到:
相关推荐
hadoop本地模式执行依赖的类YARNRunner.java,安全无病毒,放心可使用!
用eclipse本地提交Hadoop任务(如WordCount)到服务器上跑的时候,会报错: Stack trace: ExitCodeException...这是hadoop本身的一个bug,可以通过修改NativeIO和YARNRunner的源码并替换解决。这是这两个.java的zip包。
windows eclipse 运行wordcount连接linux hadoop NativeIO YARNRunner 完项目 源码
MR(MapReduce)程序提交到客户端所在的节点,由 YarnRunner 运行。这个过程中,YarnRunner 负责将 MR 程序提交到 ResourceManager,以获取资源和执行任务。 2. ResourceManager ResourceManager 是 Yarn 的核心...
YARN的作业提交流程MapReduce程序提交到YarnRunner所在节点YarnRunner向ResourceManager申请一个appliationR
(1)MR程序提交到客户端所在的节点 (2)YarnRunner向ResourceManager申请一个Application (3)RM将该应用程序的资源路径
将两个类org.apache.hadoop.io.nativeio.NativeIO.java,org.apache.hadoop.mapred.YARNRunner.java 放到工程的src下,两个类的package不修改,否则覆盖不掉原来的hadoop的那两个类