MapReduce作业提交流程

时间:2024-03-23 10:30:01

MapReduce作业提交流程
MapReduce作业提交流程

1.客户端运行一个MapReduce程序,这个程序就成一个job(作业)
2.客户端向ResourcesManager申请资源
1.先检查输入/输出 目录是否存在等
2.通过第一步检查后会返回资源(从NameNode上获取数据的元数据信息,App_ID)
3.客户端会通过元数据信息计算切片,让后上传资源文件到共享文件系统中(HDFS)
(文件上传在以Resources Manager分配的App ID为命名的文件夹中)
4.上传完成后客户端向ResourcesManager发请求,提交作业 (submit job)
5.ResourcesManager为任务分配资源(具体的NodeManager)
NodeManager启动一个App Manager
6.App Manager先初始化job,然后分析所需要的Map Task和Reduce Task数量
7.App Manager向Resources Manager先请求Map计算的资源(容器)
8.Resources Manger分配具体的Node Manager(移动计算而非移动数据 所以Map任务分配到所需数据的节点上) ,并向Node Manager分配容器
9.App Manager向Node Manager发出请求,让Node Manager在Resources Manager所分配的容器中启动计算任务(Map Task)
10.Node Manager在容器中启动Yarn Child进程,Yarn Child去共享文件系统(HDFS)中拉去资源(如计算程序,配置文件等),启动计算任务
【Yarn Child就是一个java类带有main函数,Yarn Child内部会调用我们的map/reducer方法】
11.当Map Task执行进度到达5%后,App Master会向Resources Manager申请Reduce Task所需的资源(容器)、
12.重复 9 、10 步骤
13.当最后一个计算任务完成后(因为是多个任务分布式并行处理),通知App Manager任务完成
14.App Manager把结果返回给客户端,删除计算环形缓冲区的内容,清理计算容器等资源,提交作业记录到历史存档保存