Spark综合学习笔记(二)

学习致谢:

https://www.bilibili.com/video/BV1Xz4y1m7cv?p=32

Spark内核原理

一、依赖关系

Spark综合学习笔记(二)
宽依赖:有shuffle
子RDD的一个分区会依赖于父RDD的多个分区–错误
父EDD的一个分区会被子RDD的多个分区所依赖–正确
Spark综合学习笔记(二)
窄依赖:没有shuffle
子RDD的一个分区会依赖于父RDD的1个分区–错误
父EDD的一个分区会被子RDD的1个分区所依赖–正确
Spark综合学习笔记(二)
为什么要区分宽窄依赖
对窄依赖:并行化+容错
宽依赖:进行阶段划分,(shuffle后的阶段需要等待shuffle前的阶段计算完才能执行)

Spark综合学习笔记(二)

二、DAG和Stage

DAG

Spark的DAG:就是spark任务/程序执行的流程图
DAG的开始:从创建RDD开始
DAG的结束:到action结束
一个spark程序中有几个Action操作就有几个DAG

Spark综合学习笔记(二)
Stage
Spark综合学习笔记(二)

Stage:是DAG中根据shuffle划分出来的阶段!
前面的阶段执行完才能执行后面的阶段
如图例:整个图为DAG,根据shuffle划分阶段 左边Stage1中有很多Task是并行运算的,不需要等待
也就是说同一个阶段中的线程任务可以并行执行,无需等待

Spark综合学习笔记(二)

三、名词解释

在官网中
http://spark.apache.org/docs/2.4.5/cluster-overview.html

其实有解释,如图所示,Spark Application执行时涵盖的很多概念都有解释
Spark综合学习笔记(二)
此处我们进行一个简短的翻译

1.Application:应用,就是程序员编写的Spark代码,如wordcount代码
2.Driver:驱动程序,就是用来执行main方法的JVM进程,里面会执行一些Drive端的代码,如创建sparkcontext,设置应用名,设置日志级别...
3.sparkContext:Spark运行时的上下文环境,用来和c1usterManager进行通信的,并进行资源的申请、任务的分配和监控等
4.c1usterManager:集群管理器,对于standalone模式,就是Master,对于Yarn模式就是ResourceManager /ApplicationMaster ,在集群上做统一的资源管理的进程
5.worker :工作节点,是拥有CPU/内存等资源的机器,是真正干活的节点
6.Executor:运行在worker中的VM进程!
7.RDD:弹性分布式数据集
8.DAG:有向无环图,就是根据Action形成的RDD的执行流程图---静态的图
9.Job:作业,按照DAG进行执行就形成了Job---按照图动态的执行
10.stage: DAG中,根据shuffle依赖划分出来的一个个的执行阶段!
11.Task:一个分区上的一系列操作(pip1ine上的一系列流水线操作)就是一个Task,同一个Stage中的多个Task可以并行执行!(一个Task由一个线程执行),所以也可以这样说:Task(线程)是运行在Executor(进程)中的最小单位!
12.Taskset:任务集,就是同一个stage中的各个Task组成的集合!

结合官网中的图进行理解
Spark综合学习笔记(二)

四、job提交执行流程

Spark综合学习笔记(二)

五、web-UI查看

在实例中查看,如图所示,有5个job,由于job是的DAG的动态执行,所以理论上,有几个job就有几个DAG
Spark综合学习笔记(二)
点击其中一个job
Spark综合学习笔记(二)
查看DAG
Spark综合学习笔记(二)
再打开一个job对应的DAG进行对比,发现多分割出了一部分,具体的原因是对应的算子shuffle-true即有shuffle就会分割
Spark综合学习笔记(二)

上一篇:spark运行机制


下一篇:2021SC@SDUSC(dolphinscheduler- common)