Hadoop核心组件—Yarn的工作流程

一、作业提交阶段

  1. Client 向整个集群提交 Job,同时申请一个 job_id
  2. ResourceManager 收到 Client 的请求后,给 Client 返回该 job 资源的提交路径hdfs 路径job_id (每一个 job 都有一个唯一的 job_id)
  3. Client 收到 ResourceManager 的响应后,将 Jar包Configuration信息InputSplit(数据分片信息)等数据到指定的资源提交路径
  4. Client 向 ResourceManager 发送执行作业请求

二、作业初始化阶段

  1. ApplicationManager 将 Job 添加到 ResourceScheduler(资源调度器),其维护了一个 job队列
  2. 当轮到任务执行,ResourceScheduler 通知 ApplicationManager 有空闲的 NodeManager 可以用来执行当前任务
  3. ApplicationManager 调用分配给它的 NodeManager,在其中开辟一个 Container,并在容器中启动需要被执行的Job的 ApplicationMaster,ApplicationMaster 获取 hdfs 上提交的文件,根据分片信息生成 Task

三、任务分配阶段

  1. ApplicationMaster 向 ResourceManager 申请运行 Task 任务的资源
  2. ResourceManager 将需要运行的 Task 任务分配给空闲的 NodeManager,NodeManager 领取任务创建用于执行任务的 Container

四、任务运行阶段

  1. ApplicationMaster 通知所有接收到任务的 NodeManager 启动计算
  2. NodeManager 启动计算
  3. 如果任务执行完有后续的 Task,则向 ResourceManager 申请 Container 执行后续 Task
  4. 所有的 job 执行完后,ApplicationMaster 向 ResourceManager 申请注销自己

五、任务完成阶段

  1. 框架更新计算的进度和状态