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操作。

这里的:

  1. OneToOneDependency就是父RDD和子RDD的分区一一对应
  2. RangeDependency多个父RDD和子RDD的分区一一对应
  3. 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

1. spark-2.4.6源码分析(基于yarn cluster模式)-任务提交