11. spark源代码分析(基于yarn cluster模式)- 聊聊Stage和Task
Posted Leo Han
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11. spark源代码分析(基于yarn cluster模式)- 聊聊Stage和Task相关的知识,希望对你有一定的参考价值。
通过前面的分析,我们了解到,在Spark中只存在两种Stage:
- ResultStage
- ShuffleMapStage
Stage之前划分的条件是遍历当前RDD和父RDD的依赖列表,如果遇到了ShuffleDependency
则进行Stage的划分,Spark
中最后一个Stage永远都是ResultStage,其他的都是ShuffleMapStage。
每个ShuffleMapStage都对应一个ShuffleMapTask
而每个ResultStage都对应一个ResultTask
我们经常说一个Stage对应了多个Task,这里在源代码层面来说,Master节点都是根据待计算的RDD的分区数量来生成Task,一般一个分区对应一个Task,么个task会包含需要执行的节点信息,然后Master节点会将这些Task发往对应的Executor节点去执行Task任务。
在谈谈Spark中的依赖,从大的层面来说,Spark中只有两种依赖:
- NarrowDependency 这就是我们常说的窄依赖
- ShuffleDependency 这就是我们常说的宽依赖
其他的:
- OneToOneDependency 继承自NarrowDependency
- PruneDependency 继承自NarrowDependency
- RangeDependency 继承自NarrowDependency
这里只有遇到ShuffleDependency
类型才会进行Stage划分,也就会发生我们常说的MapReduce操作。
这里的:
OneToOneDependency
就是父RDD和子RDD的分区一一对应RangeDependency
多个父RDD和子RDD的分区一一对应PruneDependency
父RDD的某几个分区和子RDD一一对应
以上是关于11. spark源代码分析(基于yarn cluster模式)- 聊聊Stage和Task的主要内容,如果未能解决你的问题,请参考以下文章
9. spark源代码分析(基于yarn cluster模式)- Task执行,Reduce端读取shuffle数据文件
3. spark-2.4.6源码分析(基于yarn cluster模式)-YARN ApplicationMaster启动
2. spark-2.4.6源码分析(基于yarn cluster模式)-YARN client启动,提交ApplicationMaster
7. spark源码分析(基于yarn cluster模式)- Task划分提交
3. spark-2.4.6源码分析(基于yarn cluster模式)-YARN contaienr启动-CoarseGrainedExecutorBackend