Spark执行流程

四个步骤:

 

1.构建DAG(调用RDD上的算子)

2.DAGScheduler将DAG切分Stage(切分的依据是Shuffle),将Stage中生成的Task以TaskSet的形式给TaskScheduler

3.TaskScheduler调度Task(根据资源情况将Task调度到相应的Executor中执行)

4.Executor接收Task,然后将Task丢入到线程池中执行

 

---------------------------------------------------------------------------

DAG描述多个RDD的转换过程,任务执行时,可以按照DAG的描述,执行真正的计算(数据被操作的一个过程)

 

DAG是有边界的:开始(通过SparkContext创建RDD),结束(出发Action,调用run Job就是一个完整的DAG就形成了)

 

一个RDD只是描述了数据计算过程中的一个环节,而DAG由一到多个RDD组成,描述了数据计算过程中的所有环节

 

一个Spark Application中有多少个DAG? 一到多个(取决于触发了多少个Action)

----------------------------------------------------------------------------

 

下一个DAG中可能产生多种不同类型和功能的Task,灰有不同的阶段

 

DAGScheduler:将一个DAG切分称一个到多个的Stage,切分的依据是Shuffle(宽依赖)

 

为什么要切分Stage?

一个复杂的业务逻辑(将多台机器具有相同属性的数据聚合到一台机器上:Shuffle)

如果有Shuffle,那么就意味着前面阶段产生的结果后,才能执行下一个阶段,下一个阶段的计算要依赖上一个阶段的数据。在同一个Stage中,会有多个算子,我们称其为pipeline(流水线)

 

----------------------------------------------------------------------------------

Shuffle的定义:

含义是洗牌,父RDD一个分区中的数据如果给了子RDD的多个分区(只要存在可能),就是Shuffle

shuffle会有网络传输数据,但有网络传输并不意味着就是shuffle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值