[Spark Core] Spark Client Job 提交三级调度框架


0. 说明

   官方文档  Job Scheduling

  Spark 调度核心组件:

  1. DagScheduler
  2. TaskScheduler
  3. BackendScheduler

 1. DagScheduler

  direct acycle graph , 有向无环图调度器

  高级调度器,面向的是 stage ,为每个 job 计算 stage 的 DAG 图,跟踪 RDD 和 stage 的输出,找出最小的调度策略来执行 job。

  该调度器提交 stage 给下层的 Task 调度器,以 taskSet 的形式进行提交。

  Spark stage 通过将 RDD 进行切割,按照 shuffle 的边界进行切割。具有窄依赖 RDD 的操作串联到每个 stage 的一个 taskset 中。

  shuffle 依赖的操作划分成两个 stage,上一个 stage 的输出供下一个 stage 进行读取。

  DAG 调度器决定运行每个 task 的首选位置。

  DAG 调度器处理因 stage 输出文件丢失导致的故障,该种情况下,之前的 stage 需要被重新提交。

  其他原因的故障由 task 调度器来处理。

  - Job
  ActiveJob,用户调用 action 方法时,job 通过 submitJob 方法进行提交。每个 job 需要多个阶段.

  - Stages
  ShuffleMapStage
  ResultStage

  - Tasks
  Spark 执行单位,需要将每个 task 发送给主机来执行。

  - Cache tracking:
  Dag 调度器能够找出哪些 RDD 被缓存了,避免 rdd 的重复计算。

  - Preferred locations
  Dag 调度器计算运行 task 的首选位置。

  - Cleanup:

  当依赖他们的运行时的 Job 完成之后清除所有数据结构,防止内存泄露。



猜你喜欢

转载自www.cnblogs.com/share23/p/9850312.html
今日推荐