目录
- spark outline
- RDD 血缘依赖作用
- RDD依赖划分
- Spark Job 划分
- DAG有向无环图
spark outline
大纲目录
RDD 血缘依赖作用
- 可以高效的解决数据容错时
- 对划分任务时候起到重要作用
RDD依赖划分
spark rdd 血缘依赖分为2种:窄依赖和宽依赖
- 窄依赖
窄依赖,
父RDD一个Partition(分区)中的数据最多被子RDD的一个Partition使用
- 宽依赖
宽依赖,
父RDD一个Partition(分区)中的数据可被子RDD的多个Partition使用,过程中会引起Shuffle
Spark Job 划分
先看一下 Spark Job 划分流程图
Spark Job 划分公式
一个Spark集群
可以同时运行多个Application, 这些Application是由集群管理器(cluster manager)来调度的,一个Application
可以并发的运行多个 job,job对应着代码中的行动算子,每执行一个行动算子,就会提交一个job,一个job
由多个stage组成,stage个数=宽依赖的个数+1,一个 stage
由多个 task 组成,task个数=每一阶段最后一个RDD的分区数
DAG有向无环图
DAG(Directed Acyclic Graph)有向无环图
,这里指RDD转换执行的过程
一个 Spark 程序可以有多个 DAG(有几个 Action/Job,就有几个 DAG)
一个 DAG 可以有多个 Stage(根据宽依赖/shuffle 进行划分)
一个 Stage 可以有多个 Task 并行执行(task 数=分区数)