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运行中的名词解释