1.job.waitForCompletion,请求运行一个app,向ResourcesManager申请资源
2.ResourcesManager返回jobId给客户端,并分配HDFS上的资源路径
3.拷贝jar包到HDFS上的资源路径下,查看数据输入的目录,并计算map任务切片规划
- 查看目录中共有几个文件
- 对每个文件:判断,剩余的长度是否>128M*1.1(),如果是则划分为一个128M的任务片,否则,剩余的长度划分为一个切片
4.先把切片信息变成数组,序列化这个切片数组job.split
5.将job对象编程xml配置文件上传job.xml
6.上传程序的jar包文件
7.客户端向ResourceManager请求一个容器来运行一个进程(MRAppMaster):1.5G+1core,可能要放入到任务调度队列中
8.ResourceManager指定nodemanager,nodemanage领取任务创建容器,到HDFS资源路径中拷贝job.jar,job.xml和job.split
9.客户端向指定的nodemanager发送启动MRAppMaster程序的shell命令
10.MRappMaster根据job.split和job.xml获知要启动多少MapTask和ReduceTask,它就会向ResourceManager申请相应数量的容器
11.MRAppMaster向创建好的容器发送启动MapTask或ReduceTask的命令
MapReduce程序内部数据处理全流程