Yarn工作流程
2021-04-27 15:33:30 0 举报
Yarn工作流程
作者其他创作
大纲/内容
开发人员
第5步:ResourceManager会将当前任务,初始化为一个Task,将该任务放置到一个FIFO调度队列
ResourceManager
如果该图对您有用,请在右上角给点个赞吧。5个赞我能多一张文件,支持作者继续画出更好的时序图给大家,谢谢大家支持配套博客介绍:请搜索CSDN 扛麻袋的少年--Hadoop模块 2021年04月27日
第1步:当程序执行该代码时,Hadoop会创建一个YarnRunner线程,该线程向 ResourceManager 申请,告诉老大我要运行一个任务了
MapTask1
......
FIFO调度队列
Container容器
Yarn工作流程,可配套MapReduce工作流程学习,MapReduce工作流程图参考:https://www.processon.com/view/link/6087bf477d9c083bd835ad7d
Capacity Scheduler容量调度器
第8步:Container开始读取并下载3个重要文件到本地
分片1
第9步:Container会根据job.split分片信息(比如有2个切片),向ResourceManager申请,我要开启对应个数(2个)MapTask
main(){ // 提交job job.waitForCompletion(true);}
13步
NodeManager
第10步:ResourceManager响应NodeManager,告诉NodeManager可以创建2个MapTask
第3步:开始向指定路径提交资源
3个重要文件:job.split (切片信息)wordcount.jar (job任务jar包)job.xml (任务执行参数信息)
提交任务
MapTask0
ReductTask在哪些节点执行?也是根据NodeManager资源情况,选择在哪几个节点的NodeManager上运行ReduceTask
hadoop203
14步
ReduceTask1
分片0
第7步:NodeManager领走任务,创建一个Container容器,并启动一个 MrAppMaster
第2步:ResourceManager响应客户端,告诉客户端可以运行,但是需要向我指定的地址提交任务相关资源(job.split、wordcount.jar、job.xml)
hadoop202
NodeManager开始创建两个MapTask,NodeManager根据资源情况,可选择在 自己节点 或者 其他节点 创建(此处选择在不同节点创建 MapTask,资源等满足条件情况下,可以在一个NodeManager中同时开启2个MapTask的,在开启MapTask前,也需要创建好Container容器)同时,会将wordcount.jar 任务jar包也拷贝到Container容器中
第6步:此时,ResourceManager从多个NodeManager中,选择比较空闲的一个让它领取该任务Task
指定路径:hdfs://.../.staging/application_id
Hadoop集群
第12(1)步:MrAppMaster知道MapTask啥时候完工。在MapTask完成后,开始向ResourceManager申请对应切片个数(2个)的ReduceTask
第12(2)步:ResourceManager响应NodeManager申请的ReduceTask个数,NodeManager开始响应请求,创建对应个数的 Container 容器(2个)。
执行任务(程序运行到如下代码时)
ReduceTask0
第13步:ReduceTask开始从不同分区拉取MapTask处理完成的数据(比如ReduceTask0读取0号分区数据,ReduceTask1读取1号分区),拉取回数据后,开始执行ReduceTask程序(备注:ReduceTask在jps中对应的进程名为:YarnChild)
提交至集群节点(此处以hadoop201为例),上传至路径:/home/hadoop/wordcount.jar
MrAppMaster
第4步:资源提交完毕,客户端开始向ResourceManager申请运行MrAppMaster
wordcount.jar
hadoop201
第11步:span style=\
第14步:ReduceTask任务执行完成,MrAppMaster会通知ResourceManager我的所有任务已经全部执行完成,此时ResourceManager会将已经分配的 MapTask 和 ReduceTask 占用的资源全部回收(释放)。最终程序执行完成
0 条评论
下一页