Spark on YARN任务提交流程

Spark on YARN是spark运行在yarn上,其中有yarn-client和yarn-cluster两种模式,它们的区别在于Driver运行的结点位置。

  • yarn-client模式
    yarn-client模式下的spark的Driver运行在客户端,适用于交互、调试,希望立即看到app的输出。
  • yarn-cluster模式
    yarn-cluster模式下的spark的Driver运行在ResourceManager(以下简称RM)启动的ApplicationMaster(以下简称AM)下,这个模式适用于生产环境,本次介绍的任务提交流程也是基于这个模式的。

先看概览图:
Spark on YARN任务提交流程_第1张图片

  1. App Submit
    首先我们写好的代码经过打包成jar文件,然后通过spark client提交给yarn的RM。RM是yarn的资源管理器,负责调度集群的资源。
  2. 启动Driver
    Spark App被提交到RM后,RM会在集群的一个节点上启动AM以及Driver。
  3. 申请资源
    AM向RM申请资源,提供spark程序所需的资源。
  4. 返回资源列表
    RM向AM返回自己的资源列表。
  5. 创建执行器对象Executor
    为了平衡压力,AM会在集群的其他NodeManager启动Executor,由于在YARN及群中,要实现计算框架可插拔,不会直接在NM创建Executor,要通过Container容器创建执行器Executor。因为NM还要执行其他计算框架的任务,所以抽象了一个Container容器来创建特定的计算框架的任务。
  6. 反向注册
    Executor创建完成后要向Driver注册,告诉Driver Executor已经创建成功。
  7. 分解任务,调度任务
    Driver等待所有Executor创建好后(上图只创建了一个Executor)就会把客户端提交上来的任务进行分解,然后分发到所有的Executor中去。

你可能感兴趣的:(spark)