当前位置: 代码迷 >> 综合 >> 作业在 Yarn 上的执行的流程
  详细解决方案

作业在 Yarn 上的执行的流程

热度:55   发布时间:2023-12-02 00:21:01.0

文章目录

  • 作业在 Yarn 上的执行的流程
    • AppMaster 的启动流程
    • 作业执行
      • 应用资源申请 AM - RM
      • 应用资源分配 NM - RM
    • 作业结束

作业在 Yarn 上的执行的流程

AppMaster 的启动流程

  • 客户端申请 job id

  • 客户端提交job到 ResourceManager,

  • 通过 RMStateStore 存储 Job 的提交信息(信息包括 启动作业的jar包、配置文件,AM 的资源以及启动 AppMaster 的参数)

  • 当 Job 信息存储完后,App 状态变为 SUBMITED,然后在调度器中创建对应的 App,并添加到调度器的集合中

    public class SchedulerApplication<T extends SchedulerApplicationAttempt> {
          private Queue queue;private final String user;private T currentAttempt;
    }
    
  • 然后创建一个 App 的一次尝试 AppAttempt

  • 将 AppAttempt 添加到调度器中,并更新调度器中 APP 的当前尝试

  • 之后会为应用程序的 ApplicationMaster 申请资源,该资源描述如下:

    <AM_CONTAINER_PRIORITY, ResourceRequest.ANY, appAttempt.getSubmissionContext().getResource(),1>
    

    即一个优先级为 AM_CONTAINER_PRIORITY(值为0)、可在任意节点上、资源量为X(用户提交应用程序时指定)的Container。

  • 当调度器为 AppMaster 分配资源后,会把当前的 AppAttemp 的信息存储到 RMStateStore 中,存储完成后会去启动 AppMaster

  • AppMaster 的启动由 ApplicationMasterLauncher 来完成,在对应的节点上启动 AppMaster,启动之后会向 AMLivelinessMonitor 注册 APPMaster,以监控其运行状态。

    AMLivelinessMonitor AM 过期时间默认为 10 分钟,每隔过 expireIntvl/3 检查一次是否有 AM 过期

  • AppMaster 启动后通过 RPC 函数 ApplicationMasterProtocol#registerApplicationMaster 向ResourceManager 注册,此时会在 AMLiveLinessMonitor 中更新心跳时间,并记录 AppMaster Web 服务的 URL,以便能从 Yarn UI 跳转至 MRAppMaster UI。

  • 之后 作业就进入了 RUNNING 状态。

作业执行

应用资源申请 AM - RM

  • AppMaster 向 ResourceManager 注册后,通过心跳向 ResourceManager 请求资源,

    心跳中包含的信息包括:资源需求描述、待释放的Container列表、请求加入黑名单的节点列表、请求移除黑名单的节点列表等。

  • 当 ResourceManager 的 ApplicationMasterService 收到先到后,会先更新 AMLivelinessMonitor 中更新 AppMaster 的最近更新时间 和 更新黑名单列表。

  • 释放待释放 Container

  • 将新的资源请求更新到调度器对应的数据结构中

  • 返回为该应用新分配的资源。

应用资源分配 NM - RM

  • NodeManager 通过心跳向 ResourceManager 汇报各个Container 运行状态。
  • 当 ResourceManager 收到心跳后,会更新该 NodeManager 上各个Container 的运行状态
  • 如果该节点上有可分配的空闲资源,则会在该节点上进行一次资源分配,而分配后的资源仅记录到对应的数据结构中,等待 APPMaster 下次通过心跳机制领取。

作业结束

  • 当作业运行结束后,AppMaster 会向 ResourceManager 注销自己
  • 开始聚集作业的日志,并上传 HDFS
  相关解决方案