说明:本文介绍MapReduce架构和运行流程都建立在yarn上,即mapreduce.framework.name属性为yarn。
一. MR程序运行流程
- 客户端向ResourceManager申请提交application
- ResourceManager返回资源提交路径以及applicationID
- 客户端将作业资源复制到HDFS上
- 客户端通过RPC调用ResourceManager的submitApplication()方法提交作业
- ResourceManager收到调用它的submitApplication()task后,将task传递给调度器(scheduler),调度器根据相应的调度算法(例如FIFO,Fair,Capacity)执行task任务
- 执行task时,调度器分配一个container,然后ResourceManager通过NodeManager在container中启动AppMaster
- 从HDFS中获取作业资源
- MRAppMaster为作业中的所有map任务和reduce任务向ResourceManager请求容器
- scheduler分配MRAPPMaster请求的容器
- 容器从HDFS中获取作业资源
- MRAPPMaster通过NodeManager通信来启动容器,创建对应的Map/Reduce Task