大家好,今天我们来说一下,Hadoop中MapReduce提交作业流程:
涉及组件:
1)客户端: 到RM (RessourceManager) 获取作业编号
检验驶入路径是否存在
检验输出路径是否不存在
计算切片信息
将配置文件/jar包/切片发送到HDFS以作业编号命名的目录(HDFS目录)
向RM发送请求,提交作业
监控作业执行的进度,每秒发送一次请求,请求作业执行进度,如果进 度有变,则
在控制台打印进度信息
2)HDFS: 存储噢诶子文件的jar包和切片信息等;
3) RessourceManager:调度NodeManager,让其分配一个容器(资源),运行MRAppMaster程序
RM会调度NodeManager分配容器,运行map任务或者reduce任务。
4)NodeManger : 分配和管理容器,根据MRAppMaster 的请求,运行任务(map 或 reduce) 当任务结束后,通知MRAppMaster,MRAppMaster做后续处理;
5)MRAppMaster :
负责计算的监控/失败重试/计算调度
收集HDFS上的配置文件,jar包,切片信息
分析需要多少个map任务,多少个reduce任务
向RM发送请求,让其分配容器,运行map任务
当map任务完成5%时,为reduce申请容器;
以上图为例: 1) 客户端运行job任务
2)客户端向ResourceManager取作业编号;
3)客户端检查输入输出路径,计算切片信息
4) 将数据发送到HDFS上,并将信息通知ResourceManager
5) ResourceManager获取信息后,通知NodeManager分配容器建立MRAppMaster
6) MRAppMaster建立,(需要1G内存的虚拟核心,如果任务1G内存不够则任务失败)
7)MRAppMaster建立后,获取HDFS资源信息,计算需要多少map和reduce来处理任务job
8) 向ResourcesManager申请容器
9) ResourcesManager通知NodeManager分配容器
10) MRAppMaster和NodeManager建立联系,NodeManager处理MRAppMaster调度过来针对job任务的map和reduce处理任务,分配响应的容器
11) 在相应分配的容器内进行map计算,MRAppMaster监控任务执行进度,当map任务执行了5%后,MRAppMaster再向ResourcesManager申请资源进行reduce计算;