15547715-29782d0d811733c5.webp

    1. 客户端将MapReduce程序提交到客户端所在的节点
    2. YarnRunner就向ResourceManager申请一个Application
    3. ResourceManager内部允许一下,看看哪个节点离提交申请节点近,以及系统资源等

    内部运行完了,就将应用程序路径返回给YarnRunner

    1. 程序就将运行程序所需要的资源提交到HDFS上
    2. 程序资源提交完后,申请运行MRAppMaster
    3. ResouceManager将用户请求转化为一个task(任务),并寻找最适合的NodeManager

      并将任务分配给这个NodeManager

    4. NodeManager领取到任务后,创建容器(Container),并产生MRAppMaster

    5. MRAppMaster向ResourceManager申请运行N个MapTask容器(切片文件中有说明)
    6. ResourceManager有寻找了一下,将MapTask分配给另外两个NodeManager,这两个

    NodeManager领取到任务,并且创建容器(Container)

    1. ResourceManager告知申请运行MapTask容器的NodeManger,向那两个接受到任务的

    NodeManger发送到程序启动脚本,这两个NodeManager就分别启动MapTask,MapTask对数据进行分区排序

    1. MRAppMaster看程序都跑完了,赶紧申请两个容器,运行ReduceTask
    2. ReduceTask的容器向MapTask容器获取相应分区的数据,并执行任务
    3. 程序运行完毕后,MapResource会向ResourceManager注销自己