1.客户端提交job到ResourceManager
2.RM中的MRApplication分配一个jobid和临时的工作目录返回给客户端
3.客服端进行初始化
1.创建工作目录
2.构建配信息conf.xml
3.上传jor包到hdfs中
4.读取文件计算切片(遍历输入路径下的所有文件,根据文件大小计算任务切片,文件<=128M*1.1就切分为一个任务切片,得到多个任务切片数,假如有3个任务切片就是3个maptask任务)
4.客户端请求RM创建一个初始化的容器(存运算资源,cpu的个数,内存的个数)
5.RM交给scheduler调度器进行分配(调度器记录了各个节点的cpu内存网络IO)
6.scheduler调度器将分配资源的任务放到队列(任务就是让nodemanager1创建初始化容器)
7.nodemanager1领取自己的任务,然后创建容器container
8.NM1中的MRAppMaster从hdfs中下载对应jobID中的所有内容(jar包,配置,任务切片信息)
9.客户端发送shell命令启动程序(发送给RM中的Applications)
10.RM中的Applications启动对应的MRAppMaster工作
11.MRAppMaster请求RM创建5个容器
12.nodemanageer领取自己的maptask任务,创建容器
13.MRAppMaster启动task任务,然后容器中的yarnchild开始运行maptask任务
14.并将任务进度汇报给MRAppMaster,然后MRAppMaster将整体的任务进度汇报给RM中的ApplicationMaster
15.maptask任务运行一段时间后,在NM中创建reducetask任务的容器,然后MRAppMaster启动reduce任务
16.然后将reduce任务运行的进度汇报给MRAppMaster,再将整体任务进度汇报给RM中的ApplicationMaster
17.整个任务完成后,释放yarnChild对象,回收maptask的容器
18.释放yarn Child对象,回收reducetask的容器
19.回收MRAppMaster容器,当前的工作退出
20.删除工作目录中的数据