(job的提交):

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

相关文章: