一、作业流程
1、
客户端到MR申请作业编号
检验输入目录是否存在
检验输出木木是否为空
计算切片信息(偏移量,数据大小,放在那些DN上)
2、
将conf,jar,切片信息发送到HDFS以作业编号命名的目录下
3、
向RM发送请求提交作业
4、
RM调度NM,让NM分配一个容器,运行MRAppmaster程序
5、
MRAppmaster收集HDFS上的conf,jar,切片信息
6、
MRAppmaster分析出需要运行多少个Map任务,多少个reduce任务
7、
MRAppmaster向RM发送请求,让RM分配容器,运行map任务
8、
RM调度NM分配容器用于运行map任务
9、
当map运行到5%,MRAppmaster向RM发送请求,让RM分配容器,运行reduce任务
10、
RM调度NM分配容器用于运行reduce任务
11、
当任务结束,NM通知MRAppmaster做后续处理
ps:客户端在提交完作业后,会监控作业执行的进度,每秒发送一次请求,请求作业执行进度,如果进度有变,则
在控制台打印进度信息
二、角色作用
客户端
到RM取号,作业编号
检验输入目录或文件是否存在
检验输出目录是否指定,并且不存在
计算切片信息
将配置文件/jar包/切片信息发送到HDFS以作业编号命名的目录中(HDFS目录)
向RM发送请求,提交作业
监控作业执行的进度,每秒发送一次请求,请求作业执行进度,如果进度有变,则
在控制台打印进度信息
HDFS
存储配置文件/jar包/切片信息
ResourceManager
调度NodeManager,让NM分配一个容器,运行MRAppMaster程序
RM会调度NodeManager分配容器,用于运行map任务或者reduce任务
NodeManager
分配容器,根据MRAppMaster的请求,运行指定的任务,map任务或者reduce任务
当任务运行结束,要通知MRAppMaster,MRAppMaster做后续的处理
MRAppMaster
负责计算的监控/失败重试/计算调度
收集HDFS上的配置文件/jar包/切片信息
分析出需要运行多少个Map任务,多少个reduce任务
向RM发送请求,让RM分配容器,运行map任务
当map任务完成5%之后,为reduce申请容器