YARN的执行流程

本文详细介绍了MR程序在运行过程中的关键步骤,包括五个独立进程的作用及其交互方式。此外还阐述了从作业提交到任务完成整个流程中的核心操作,如资源申请、任务调度和执行等。

MR程序运⾏时,有五个独⽴的进程:

        1. YarnRunner:⽤于提交作业的客户端程序

        2.ResourceManager:yarn资源管理器,负责协调集群上计算机资源的分配
        3. NodeManager:yarn节点管理器,负责启动和监视集群中机器上的计算容器 (container
        4.Application Master:负责协调运⾏MapReduce作业的任务,他和任务都在容器中运⾏,这些容由资源管理器分配并由节点管理器进⾏管理。
        5.HDFS:⽤于共享作业所需⽂件。

1. 调⽤waitForCompletion⽅法每秒轮询作业的进度,内部封装了submit()⽅法,⽤于创建JobCommiter实例,并且调⽤其的submitJobInternal⽅法。提交成 功后,如果有状态改变,就会把进度报告到控制台。错误也会报告到 控制台
2. JobCommiter实例会向ResourceManager申请⼀个新应⽤ID,⽤于MapReduce 作业ID。这期间JobCommiter也会进⾏检查输出路径的情况,以及计算输⼊分⽚。
3. 如果成功申请到ID,就会将运⾏作业所需要的资源(包括作业jar⽂件,配置⽂件和 计算所得的输⼊分⽚元数据⽂件)上传到⼀个⽤ID命名的⽬录下的HDFS上。此时副本个数默认是10.
4. 准备⼯作已经做好,再通知ResourceManager调⽤submitApplication⽅法提交作业。
5. ResourceManager调⽤submitApplication⽅法后,会通知Yarn调度器 (Scheduler),调度器分配⼀个容器,在节点管理器的管理下在容器中启动 application master进程。
6. application master的主类是MRAppMaster,其主要作⽤是初始化任务,并接 受来⾃任务的进度和完成报告。
7. 然后从HDFS上接受资源,主要是split。然后为每⼀个split创建MapTask以及参 数指定的ReduceTask,任务ID在此时分配
8. 然后Application Master会向资源管理器请求容器,⾸先为MapTask申请容 器,然后再为ReduceTask申请容器。(5%
9. ⼀旦ResourceManager中的调度器(Scheduler),为Task分配了⼀个特定节 点上的容器,Application Master就会与NodeManager进⾏通信来启动容器。
10. 运⾏任务是由YarnChild来执⾏的,运⾏任务前,先将资源本地化(jar⽂件,配置⽂件,缓存⽂件)
11. 然后开始运⾏MapTaskReduceTask
12. 当收到最后⼀个任务已经完成的通知后,application master会把作业状态设 置为success。然后Job轮询时,知道成功完成,就会通知客户端,并把统计信息输出 到控制台

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值