开发者学堂课程【Hadoop 分布式资源管理框架 YARN:YARN 作业提交全流程】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/95/detail/1566
YARN 作业提交全流程
一、作业提交过程之 YARN
(1)作业提交
第1步:Client 调用 job.waitForCompletion 方法,向整个集群提交 MapReduce 作业。
第2步:Client 向 RM 申请一个作业 id。
第3步:RM 给 Client 返回该 job 资源的提交路径和作业 id。
第4步:Client 提交 jar 包、切片信息和配置文件到指定的资源提交路径。
第5步:Client 提交完资源后,向 RM 申请运行 MrAppMaster。
(2)作业初始化
第6步:当 RM 收到 Client 的请求后,将该job添加到容量调度器中。
第7步:某一个空闲的 NM 领取到该 Job。。
第8步:该 NM 创建 Container,并产生 MRAppmaster。
第9步:下载 Client 提交的资源到本地。。
(3)任务分配
第10步:MrAppMaster 向 RM 申请运行多个 MapTask 任务资源。
第11步:RM 将运行 MapTask 任务分配给另外两个 NodeManager, 另两个NodeManager 分别领取任务并创建容器。
(4)任务运行
第12步: MR 向两个接收到任务的 NodeManager 发送程序启动脚本,这两个NodeManager 分别启动 MapTask,MapTask 对数据分区排序。
第13步: MrAppMaster 等待所有 MapTask 运行完毕后,向 RM 申请容器,运行ReduceTask第14步:ReduceTask 向 MapTask 获取相应分区的数据。
第15步:程序运行完毕后,MR 会向 RM 申请注销自己。
(5)进度和状态更新
YARN中 的任务将其进度和状态(包括 counter)返回给应用管理器,客户端每秒(通过 mapreduce.client. progressmonitor.pllinterval 设置)向应用管理器请求进度更新,展示给用户。
(6)作业完成
除了向应用管理器请求作业进度外,客户端每 5 分钟都会通过调用waitForCompletion() 来检查作业是否完成。时间间隔可以通过mapreduce.client.completion.pollinterval 来设置。作业完成之后,应用管理器和Container 会清理工作状态。作业的信息会被作业历史服务器存储以备之后用户核查。
二、作业提交过程之 MapReduce