摘要:
基本概念
1.1 Application
1.2 Job
1.3 Stage
1.4 TaskSet
1.5 Task
1.6 DAG
2.相关的类
2.1DAGScheduler
2.2ActiveJob
2.3Stage
2.4Task
3.运行方式
4.工作流程
4.1划分Stage
4.2生成Job,提交Stage
4.3任务集的提交
4.4任务作业完成状态的监控
4.5任务结果的获取
内容总结:
基本概念
首先,我们先列出任务调度涉及的相关概念:
Application:由多个作业组成的Spark应用程序
Job:由RDD Action产生的多个stage所组成的一次计算操作
Stage:任务集所对应的调度阶段
TaskSet:这是一组彼此之间有关联,但是互相不存在shuffle依赖的任务所组成的任务集
Task:单个分区数据集上的处理流程单元
DAG:有向无环图
2. 相关的类:
2.1作业调度(DAGScheduler)
DAGScheduler 是基于stage的高级调度(逻辑调度),这个调度会计算每个Job对应的stage的DAG。然后然后以TaskSet的形式提交stage到底层的TaskScheduler.

Spark的stages 是以shuffle为边界切分RDD图来创建的。具有窄依赖(例:map(),filter())的操作会在对应stage的一系列任务中管道式的运行,但是具有宽依赖的操作则需要多个stage.最后所有的stage之间将只有shuffle依赖关系。
实际上这些操作发生在RDD.compute(),在各个RDD的实现上,比如MappedRDD,FilteredRDD等

下面提到还一些概念:

