
- 客户端将MapReduce程序提交到客户端所在的节点
- YarnRunner就向ResourceManager申请一个Application
- ResourceManager内部允许一下,看看哪个节点离提交申请节点近,以及系统资源等
内部运行完了,就将应用程序路径返回给YarnRunner
- 程序就将运行程序所需要的资源提交到HDFS上
- 程序资源提交完后,申请运行MRAppMaster
ResouceManager将用户请求转化为一个task(任务),并寻找最适合的NodeManager
并将任务分配给这个NodeManager
NodeManager领取到任务后,创建容器(Container),并产生MRAppMaster
- MRAppMaster向ResourceManager申请运行N个MapTask容器(切片文件中有说明)
- ResourceManager有寻找了一下,将MapTask分配给另外两个NodeManager,这两个
NodeManager领取到任务,并且创建容器(Container)
- ResourceManager告知申请运行MapTask容器的NodeManger,向那两个接受到任务的
NodeManger发送到程序启动脚本,这两个NodeManager就分别启动MapTask,MapTask对数据进行分区排序
- MRAppMaster看程序都跑完了,赶紧申请两个容器,运行ReduceTask
- ReduceTask的容器向MapTask容器获取相应分区的数据,并执行任务
- 程序运行完毕后,MapResource会向ResourceManager注销自己
