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: 一个进程中可以有多个线程在工作,从而可以处理多个数据分区(如运行任务、读取或者存储数据)。

猜你喜欢

转载自blog.csdn.net/m0_57781407/article/details/126439368