Spark的任务调度

Posted 发量不足

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark的任务调度相关的知识,希望对你有一定的参考价值。

一、概念:

DAG(Direted Aeyelie Grph,有向无环图)Sprk中的RDD通过一系列的转换算子操作和行动算子操作形成了一个DAG

如果一个有向图无法从任意顶点出发经过若干条边回到该点,则这个图就是有向无环图

根据RDD之间依赖关系的不同可以将DAG划分成不同的Stage(调度阶段)。对于窄依赖来说,RDD分区的转换处理是在一个线程里完成的,所以窄依赖会被Spark划分到同一个Stage中。

宽依赖是划分Stage的依据

二.RDD在Spark中的运行流程

Spark的任务调度流程分为RDD ObjectsDAGSchedulerTaskScheduler以及Worker4个部分。

(1) RDD Objects:当RDD对象创建后,SparkContext会根据RDD对象构建DAG有向无环图,然后将Task提交给DAGScheduler.

(2) DAGScheduler:将作业的DAG划分成不同的Stage,每个Stage都是TaskSet 任务集合,并以TaskSet为单位提交给TaskScheduler.

(3) TaskScheduler: 通过TaskSetManager 管理Task,一个TasScheduler 只能服务一个SparkContext对象。

(4) Worker: 一个进程中可以有多个线程在工作,从而可以处理多个数据分区(如运行任务、读取或者存储数据)。

以上是关于Spark的任务调度的主要内容,如果未能解决你的问题,请参考以下文章

spark中资源调度任务调度

Spark 任务调度机制详解

SPARK 任务调度源码总结

Spark schedule资源调度分配详解

Spark核心作业调度和任务调度之DAGScheduler源码

3天掌握Spark--内核调度详解