1.DAG
DAG:有向无环图
下图是带分区关系的DAG图






上图其实就是一个job,只有一个action,就是一个DAG图。
2.DAG的宽窄依赖和阶段划分




3.内存迭代计算
内存迭代计算就是说在一个task进程运行,不需要网络IO,如果全部放在一个内存进程里面跑,不用网络IO,但是这样并行度会大大下降,并行度优先于网络IO。纯内存迭代就是Local模式,没有任何网络IO。

改分区之后就会产生宽依赖,就是shuffle,导致内存迭代管道变短,性能会下降。


4.Spark并行度
一定是先有并行度,再有分区规划。





5.Spark任务调度


DAG调度器:知道每个task该做什么以及总共有多少个task,它们分别应该干什么。
task1会和task4,5,6进行交互等等内容。
Task调度器:上面的分解任务,然后Task调度器进行分配工作给executor。
这两个都是Driver里面的调度器,也是核心作用

当一个服务器里面有2个executor时,任务task1和task4进行交互时,采用的是本地回环网络IO,因为是两个进程,无法通过内存直接交互。放在一个executor中即可。
6.Spark运行中的名词解释



本文深入解析了DAG图在Spark中的应用,介绍了宽窄依赖与阶段划分,探讨了内存迭代计算如何影响性能。此外,详细讲解了Spark的并行度设置、任务调度原理,以及关键术语如DAG调度器和Task调度器。
312

被折叠的 条评论
为什么被折叠?



