1.mr程序提交的客户端所在的节点通过代理的方式向resource manager申请提交一个application;
2.resource manager向客户端所在的节点返回application资源提交路径(hdfs://xxx..)以及application_id;
3.mr程序提交的客户端通过job.submit()向hdfs提交job运行所需要的资源文件(hdfs://xxx..//application_id)等;
4.资源提交完毕,向resource manager申请运行mrAppMaster;
5.resource manager 将用户的请求初始化成一个task,按照FIFO调度策略分配任务;
6.node manager领取到task任务;
7.node manager领取到任务创建一个容器分配好cpu和ram,并从hdfs下载job资源到本地;
8.MRAppmaster 向resource manager申请运行maptask容器;
9.其他的node manager领取到任务以后创建容器,并分配相应的cpu和ram内存以及jar包;
10.因为maptask都被MRAppmaster监管,所以有了容器之后MRAppmaster会向其他的容器发送程序启动脚本 (java -cp....),maptask会开始执行程序,并且生成分区且排序好的文件;
11.MRAppmaster会向resource Manager申请3个容器运行reduce task程序;
12.reduce向map端获取响应分区的数据,并运行程序;
13.application运行完毕后,MRAppmaster会向resource manager注销自己。