Yarn的工作机制,以及MR Job提交运行过程
在Yarn中将MapReduce1版本中的JobTracker两个主要功能分离成单独的组件,这两个功能是资源管理ResourceManager和任务调度(/监控)的ApplicationMaster。新的资源管理器全局管理所有应用程序计算资源的分配,每一个应用的ApplicationMaster负责相应的调度和协调。
Yarn中主要角色包括:ResourceManager、ApplicationMaster、NodeManager
先是ResourceManager,它负责启动每一个Job所属的ApplicationMaster、另外监控ApplicationMaster以及NodeManager的存在情况,并且负责协调集群上计算资源的分配。
然后是ApplicationMaster,每个job有一个ApplicationMaster,负责运行mapreduce的任务,并负责报告任务状态。
最后就是NodeManager,负责启动和管理节点中的容器。
MapReduce过程:
1.运行haddop jar命令之后产生RunJar进程,客户端向ResourceManager申请执行一个job。
2.然后ResourceManager收到请求后会向客户端返回job相关资源的提交路径以及JobID。
3.客户端会将job相关资源提交到相应的共享文件系统的路径下(/yarn-staging/jobID).
4.客户端向RM汇报提交结果。
5.RM会将这个job加入任务队列。
6.NodeManager通过与RM的心跳连接,从RM的任务队列中获取新的任务。
7.随后ResourceManager通过调度器为NodeManager分配资源容器。
8.RM在容器中启用MRAppmaster进程。
9.由创建的MRAppmaster负责分配在哪些NodeManager上运行map(即yarnchild进程)和reduce任务。
10.运行map和reduce任务的NodeManager从共享文件系统中获取job相关资源,包括jar文件,配置文件等。然后运行map和reduce任务。
11.job任务执行后,MRAppmaster向RM注销自己,让RM回收资源。
转载于:https://my.oschina.net/134596/blog/1641302