Spark的任务调度
Posted 发量不足
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark的任务调度相关的知识,希望对你有一定的参考价值。
一、概念:
DAG(Direted Aeyelie Grph,有向无环图)Sprk中的RDD通过一系列的转换算子操作和行动算子操作形成了一个DAG。
如果一个有向图无法从任意顶点出发经过若干条边回到该点,则这个图就是有向无环图。
根据RDD之间依赖关系的不同可以将DAG划分成不同的Stage(调度阶段)。对于窄依赖来说,RDD分区的转换处理是在一个线程里完成的,所以窄依赖会被Spark划分到同一个Stage中。
宽依赖是划分Stage的依据
二.RDD在Spark中的运行流程
Spark的任务调度流程分为RDD Objects、DAGScheduler、TaskScheduler以及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的任务调度的主要内容,如果未能解决你的问题,请参考以下文章