(job的提交):
- 客户端向resourcemanager提交job请求,申请资源。
- Resourcemanager向客户端返回一个job_id以及共享资源路径hdfs/tmp
- 客户端将共享资源放在共享资源路径下(job.jar,job.xml,job.xml)。
- 客户端向resourcemanager返回共享资源放置成功的响应,真正提交应用程序。
- Resourcemanager向客户端返回一个节点,运行MRAppMaster。
- Resourcemanager到对应节点启动MRAppMaster,先启动container后启动MRAppMaster。
- MRAppMaster会将这个job进行初始化,生成application_id,并生成当前job的工作簿,记录maptask和reducetask的进度和状态。
- MRAppMaster到共享资源下下载共享资源到本地。
- MRAppMaster向resourcemanager申请maptask和reducetask运行的资源,优先maptask。
- Resourcemanager向MRAppMaster返回对应的资源节点,maptask,数据的本地化;reducetask,随机。
- MRAppMaster到对应的节点启动maptask(先启动container)。
- Maptask会到共享资源路径下载共享资源。
- 开始运行maptask任务。
- Maptask在运行过程中向MRAppMaster汇报自己的进度和状态。
- 当MRAppMaster获取到一个节点上的所有maptask任务完成,启动reducetask。
- MRAppMaster到对应的节点启动container启动reducetask。
- Reducetask到共享资源路径下下载共享资源。
- 所有的maptask执行完成,fetch完成,reducetask执行。
- Reducetask在运行期间向MRAppMaster汇报自己的进度和状态。
- 当maptask和reducetask执行完成,MRAppMaster到对应的节点进行资源回收。
- 所有的maptask和reducetask运行完成MRAppMaster向resourcemanager注销自己,释放资源。