Hadoop2.x中Yarn框架的任务发布流程

来源:互联网 发布:可以做seo的淘宝客cms 编辑:程序博客网 时间:2024/06/03 09:22
  1. 提交一个jar包,指定要运行的MapReduce程序。

  2. 执行到引导程序的waitforcompletion( )方法时,该方法调用启动yarn框架的进程Runjar。

  3. Runjar进程会向yarn框架的ResourceManager申请一个job。
  4. Resourcemanager会为该job分配一个jobID以及返回job相关资源的提交路径(…..staging-dir)。
  5. Runjar进程会将job相关事宜写入Resourcemanager返回的路径中,并在写好后向Resourcemanager通报,告诉它写完了。
  6. 接着Resourcemanager会将该job加入job任务队列,等待job执行。
  7. 轮到该job执行时,Resourcemanager会查询整个集群状态,选择一定数量Nodemanager(通常是数据所在的Nodemanager),将该mapreduce任务派发到Datanode上面。
  8. 得到业务逻辑的节点会根据第4步中写好的job资源文件的内容分配相应的资源形成相对封闭的容器给该程序使用。
  9. 之后,启动mapReduce框架,启动前yarn负责在承担此次任务的工作节点中选择一个master,会在这个master中启动相应的MRAppMaster进程(这个进程是MapReduce框架的一部分,代表着MapReduce的启动)。同时,yarn又随机选出一定数量的执行map模块的节点,在这些节点上启动YarnChild进程,负责执行map逻辑。剩下的节点负责reduce逻辑。
  10. MRAppMaster进程正式启动后,会向ResourceManager注册本次任务,代表任务开始执行。此时Runjar进程已经没用了。
  11. 接下来启动map节点,执行map逻辑,启动YarnChild进程。MRAppMaster负责管理这些进程。
  12. 等所有map逻辑完成后,启动reduce节点。
  13. 等reduce节点完成后,即所有的YarnChild进程结束,MRAppMaster进程会向ResourceManager注销本次任务,代表任务完成,Yarn可以回收本次分配的全部资源,MRAppMaster进程也会结束。
  14. 本次任务执行完成,查看结果。