spark调度系统核心组件SparkContext、DAGSchedul、TaskScheduler介绍

目录

    • 1. SparkContext
    • 2.DAGScheduler
    • 3. TaskScheduler
    • 4. 协作关系
    • 5 TaskSet的定义
    • 1. **组件关系说明**

Spark调度系统的核心组件主要有SparkContext、DAGScheduler和TaskScheduler

SparkContext介绍

1. SparkContext

1、资源申请

  • SparkContext是Spark应用程序与集群管理器(如Standalone模式下的Master、Yarn模式下的ResourceManager)通信的接口,负责向集群管理器注册并申请资源
  • 例如在Standalone模式中,在Client中创建SparkContext(简称SC)后,SC向master注册并申请资源,master通过心跳了解worker节点资源情况,挑选空闲worker创建Executor分配给SC
  • Yarn - client模式下,先在client中创建SparkContext(SC),SC向ResourceManager申请创建ApplicationMaster,之后由ApplicationMaster向ResourceManager申请NodeManager来为SC创建Executor 。

2、任务划分与调度

  • SparkContext包含DAGScheduler和TaskScheduler。它负责将用户提交的任务进行分解,先分解成Stage,然后进一步分解出task,并发送到Executor中执行
  • 例如在任务运行阶段,Executor向SC报到后,SC将任务分解,Executor创建线程池来运行任务,并及时向SC汇报执行情况 。

3、其他职责

  • SparkContext运行在Driver中,负责产生DAG,提交Job,转化Task 。同时它也是Spark最重要的API,是用户逻辑与Spark集群主要的交互接口 。

2.DAGScheduler

1、构建DAG与划分Stage

  • 当用户在RDD上执行Action操作时,Spark会根据相关依赖关系进行血缘(lineage)计算,构建有向无环图(DAG)
  • DAGScheduler负责将DAG图根据宽依赖(如ShuffleDependency)划分成多个Stage。遇见一个宽依赖就划分一个Stage,这个Stage的任务被称为ShuffleMapTask
  • 如果遇见一个窄依赖,就可以将它加入到同一个Stage中。例如wordcount程序中,根据操作算子和RDD依赖关系进行Stage的划分 。

2、Stage调度:按照Stage之间的依赖顺序调度各个Stage

  • 例如在调度流程中,将DAG交给DAGScheduler后,它根据ShuffleDependency切分Stage,并按照依赖顺序调度这些Stage 。

3、失败恢复:当某个Stage执行失败时,DAGScheduler通过血缘回溯重新调度失败的Stage及其后续Stage 。例如通过重新提交相关的TaskSet来尝试恢复执行 。

  • 核心职责

    • RDD血缘关系转换为Stage图
    • 处理Stage划分策略
      RDD1
      ShuffleDependency
      ShuffleMapStage

你可能感兴趣的:(spark学习,spark,ajax,javascript)