DAG有向无环图的构建和划分stage

Directed Acyclic Graph 有向无环图

他是按照程序中的rdd之间的依赖关系,生成了一张有方向无环图

1为什么要划分stage(调度阶段)?

由于一个job任务中可能有大量的宽窄依赖,由于窄依赖不会产生shuffle,宽依赖会产生shuffle。后期划分完stage之后,在同一个stage中只有窄依赖,并没有宽依赖,这些窄依赖对应的task就可以相互独立的取运行。划分完stage之后,它内部是有很多可以并行运行task。

2.如何划分stage?(宽依赖划分)

(1)生成DAG有向无环图之后,从最后一个rdd往前推,先创建一个stage,它是最后一个stage。

(2)如果遇到窄依赖,就把该rdd加入到stage中,如果遇到宽依赖,就从宽依赖切开,最后一个stage也就划分结束

(3)后面重新创建一个新的stage,还是按照第二部操作继续往前推,一直推到最开始的rdd,整个划分stage也就结束了。

3.stage内部逻辑

(1)每一个stage中按照RDD的分区划分了很多个可以并行运行的task

(2)把每一个stage中这些可以并行运行的task都封装到一个taskSet集合中

(3)前面stage中task的输出结果数据 ,是后面stage中task输入数据

4.Application 、job、Stage、task之间的关系

Application是spark的一个应用程序,它包含了客户端写好的代码以及任务运行的时候需要的资源信息。

后期一个application中有很多个action操作,一个action操作就是一个job,一个job会存在大量的宽依赖,后期会按照宽依赖进行stage的划分,一个job又产生很多个stage,每一个stage内部有很多可以并行的task。

5.DAG是RDD的一个依赖关系和执行流程。

创建RDD的时候就构建了这个DAG 什么时候执行action 这个DAG就形成了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值