本篇文章是我使用平板画的一张Yarn工作流程
0.Mr程序提交一个jar程序,在main方法的最后一行,创建一个YarnRunner,本地模式是localRunner
1.产生之后向RM申请运行一个Application
2.RM向Runner获取job,并要求将资源提交到指定路径
3.提交的资源是Job.split(切片)(控制开启MapTask数量)、Job.xml(配置文件)(控制任务的参数)、wc.jar(程序代码)
4.提交完资源后,向RM申请运行mrAppMaster
5.将用户的请求初始化为一个Task,无论多少个任务都会放到一个任务队列中,等待运行
6.当有空闲的NodeManager时,就会领取RM中的Task
7.NodeManager首先创建一个Container容器,在容器中启动MRAppmaster
8.启动后到Job资源中获取split切片信息
9.NodeManager再向RM申请运行split中获取的切片个数的MapTask容器
10.RM接受申请后创建节点和MapTask容器
11.MRAppmaster发送启动脚本开启MapTask
12.当MapTask运行完成后,MRAppmaster再向RM申请容器运行ReduceTask
13.Reduce向Map拉取相应分区的数据
14.Reduce也完成后,MRAppmaster向RM注销自己