我们知道spark可以将运行过的RDD存储到内存上, 并在需要的时候重复利用. 那么spark是怎么完成这些工作的, 本文将通过分析源码来解释RDD的重复利用过程. 在上一篇文章解释了spark的执行机制, DAGScheduler负责分解action, 在DAGScheduler.getMi...
分类:
其他好文 时间:
2014-12-23 22:30:39
阅读次数:
915
1. rdd action ->sparkContext.runJob->dagscheduler.runJob 1 def runJob[T, U: ClassTag]( 2 rdd: RDD[T], 3 func: (TaskContext, Iterator[T])...
分类:
其他好文 时间:
2014-12-11 22:16:37
阅读次数:
442
本文以Spark1.1.0版本为基础。 经过前一段时间的学习,基本上能够对Spark的工作流程有一个了解,但是具体的细节还是需要阅读源码,而且后续的科研过程中也肯定要修改源码的,所以最近开始Spark的源码的学习。首先以重要文件为基础分别分析,然后再整体的分析。(一)DAGScheduler....
分类:
其他好文 时间:
2014-12-01 14:16:48
阅读次数:
164
从org.apache.spark.scheduler.DAGScheduler#submitMissingTasks开始,分析Stage是如何生成TaskSet的。如果一个Stage的所有的parent stage都已经计算完成或者存在于cache中,那么他会调用submitMissingTask...
分类:
其他好文 时间:
2014-10-27 06:56:06
阅读次数:
249
在上文《Spark技术内幕:Stage划分及提交源码分析》中,我们分析了Stage的生成和提交。但是Stage的提交,只是DAGScheduler完成了对DAG的划分,生成了一个计算拓扑,即需要按照顺序计算的Stage,Stage中包含了可以以partition为单位并行计算的Task。我们并没有分析Stage中得Task是如何生成并且最终提交到Executor中去的。
这就是本文的主题。...
分类:
其他好文 时间:
2014-10-19 18:38:46
阅读次数:
299
在一个RDD触发了一个action(比如count,collect)时,任务是如何被提交到?什么是Stage?DAGScheduler的作用是什么?它是如何划分Stage的?本文将基于源码,进行深入分析。...
分类:
其他好文 时间:
2014-10-19 00:08:01
阅读次数:
308
DAGScheduler面向stage的调度层,为job生成以stage组成的DAG,提交TaskSet给TaskScheduler运行。每个Stage内,都是独立的tasks,他们共同运行同一个compute function,享有同样的shuffledependencies。DAG在切分stag...
分类:
其他好文 时间:
2014-10-14 23:37:19
阅读次数:
344
经过前面文章的SparkContext、DAGScheduler、TaskScheduler分析,再从总体上了解Spark Job的调度流程1、SparkContext将job的RDD DAG图提交给DAGScheduler;2、DAGScheduler将job分解成Stage DAG,将每个Sta...
分类:
其他好文 时间:
2014-08-02 04:07:42
阅读次数:
1266
Spark中的Scheduler
scheduler分成两个类型,一个是TaskScheduler与其实现,一个是DAGScheduler。
TaskScheduler:主要负责各stage中传入的task的执行与调度。
DAGScheduler:主要负责对JOB中的各种依赖进行解析,根据RDD的依赖生成stage并通知TaskScheduler执行。
实例生成
TaskSchedule...
分类:
其他好文 时间:
2014-05-04 09:08:02
阅读次数:
379