如图4-9 所示,是Yarn 的工程流程的工作流程。
图4-9 Yarn 工作流程
1.客户端通过ResourceManager 向ApplicationsManager 提交应用,将jar 包文件等上传到HDFS 的指定目录,并请求一个ApplicationMaster 实例。
2. ApplicationsManager 生成一个Application ID。ResourceManager 将请求转发给调度器,调度器分配一个Container,然后Resource Manager 在这个Container 中启动ApplicationMaster 实例,并交由NodeManager 对ApplicationMaster 实例进行管理。(www.daowen.com)
3. ApplicationMaster 向ResourceManager 进行注册,注册之后客户端就可以通过查询ResourceManager 获得ApplicationMaster 的详细信息。
4. ApplicationMaster 通过计算任务数和数据本地性等信息向ResourceManager 申请Container,并由ApplicationMaster 负责将Container 启动。
5.应用程序的代码在启动的Container 中运行,NodeManager 把运行的进度、状态等信息发送给ApplicationMaster。
6.重复4~5 步骤,直至应用程序运行结束。ApplicationMaster 向ResourceManager取消注册然后关闭,所有用到的Container 也归还给系统。
Hadoop2.x MapReduce 框架采用Yarn 作为资源管理,在运行时有它特有两类实例进程:MRAppMaster 和Yarnchild,其工作流程和Yarn 很相似。在MapReduce中ApplicationMaster 的实例化叫做MRAppMaster,MRAppMaster 负责整个程序的过程调度及状态协调。MRAppMaster 启动后根据本次应用的描述信息,计算出需要的Map 和Reduce 任务数量,然后向集群申请机器启动相应数量的进程,这个进程称之为Yarnchild。MRAppMaster 首先启动Map 任务的Yarnchild,当监控到所有Map Yarnchild 任务完成之后再去启动Reduce 任务的Yarnchild 并释放Map 任务使用资源(真实情况是,某些Map Yarnchild 处理完成后,就会开始启动Reduce Yarnchild,可以观察2.3 章节pi 的运行实例即为该种情况)。当Reduce Yarnchild 运行完毕后,MRAppMaster 和Yarnchild 都会被撤销并释放相应资源。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。