执行流程:
- job.waitForCpmpletion将Job任务提交到APPsMaster
- apps返回一个jobID和临时工作目录
- 在HDFS中做初始化工作
加载xml文件--->configuration
上传jar包(Mapper类 Reducer类)
Reducer的个数
根据输入路径 计算任务切片(根据目标路径中文件的个数和文件的大小计算任务切片的大小)
1)先查看文件的个数
2)根据文件的大小 File>=28M*1.1 比较 128M*1.1 1+1
3)Splits[]任务切片--->临时输出路径
4.初始化完成ok
5.申请所需内存(Container--容器) 执行程序
6.ResourceMagnager接收到请求后将任务化分给Scheduler
7.领取任务 将任务取回到NodeManager并创建所需内存
8.下载自己job中所需的任务插件jar xml
9.MrAPPMaster向RM申请5个容器 3个MapTask任务 2个ReducerTask任务
10.RM将任务交给Scheduler,后者将MapperTask和ReducerTask分配到任务队列当中
11.三个MT任务被三个NM领取到 并创建容器Container
12.客户端的指令 先执行MapTask任务
13.各个节点汇报任务进程给MrAPPMaster
14.MrAPPMaster向RM汇报总得任务进程
15.MapTask结束后 节点机再将两个ReducerTask任务领取回去 并创建容器