美文网首页数据与未来
spark的宽依赖和窄依赖,以及Stage

spark的宽依赖和窄依赖,以及Stage

作者: Mervyn_2014 | 来源:发表于2017-12-29 17:28 被阅读42次

一、宽依赖与窄依赖

宽依赖(Wide or shffle Dependencies)和窄依赖(Narrow Dependencies)。


宽依赖与窄依赖.jpg

1.如图所示一个空心方框表示一个RDD,实心蓝底的框表示partition。
2.宽依赖与窄依赖的区分主要是父partition与子partition的对应关系
(注:箭头之前的为父partition,箭头之后的为子partition)。

窄依赖(图左):父partition对子partition是一对一或多对一(只有一个儿子)。
宽依赖(图右):父partition对子partition是一对多(有多个儿子)。

窄依赖一般是对RDD进行map,filter,union等Transformations。
宽依赖一般是对RDD进行groupByKey,reduceByKey等操作,就是对RDD中的partition中的数据进行重分区(shffle)。
join操作即可能是宽依赖也可能是窄依赖,当要对RDD进行join操作时,如果RDD进行过重分区则为窄依赖,否则为宽依赖。

二、Stage的划分及容灾数据处理

Stage.jpg

如上图所示:
A,B,C,D,E,F,G代表RDD
当执行算子有shffle操作的时候,就划分一个Stage。(即宽依赖来划分Stage)
窄依赖会被划分到同一个Stage中,这样它们就能以管道的方式迭代执行。宽依赖由于依赖的上游RDD不止一个,所以往往需要跨节点传输数据。从容灾角度讲,它们恢复计算结果的方式不同。窄依赖只需要重新执行父RDD的丢失分区的计算即可恢复。
而宽依赖则需要考虑恢复所有父RDD的丢失分区,并且同一RDD下的其他分区数据也重新计算了一次。

相关文章

  • spark的宽依赖和窄依赖,以及Stage

    一、宽依赖与窄依赖 宽依赖(Wide or shffle Dependencies)和窄依赖(Narrow Dep...

  • Spark1.6.3 Stage划分算法

    在分析Stage划分算法之前,需要知道RDD的宽依赖和窄依赖的概念。窄依赖:Narrow Dependency,即...

  • 对join with inputs co-partitioned

    在学习spark宽依赖、窄依赖的时候,对 map算子是窄依赖、reduceByKey算子是宽依赖 都好理解;而对于...

  • Spark宽依赖与窄依赖

    Spark中RDD的高效与DAG(有向无环图)有很大的关系,在DAG调度中需要对计算的过程划分Stage,划分的依...

  • Spark宽依赖和窄依赖深度剖析

    RDD依赖关系与stage划分 Spark中RDD的高效与DAG图有着莫大的关系,在DAG调度中需要对计算过程划分...

  • SparkShuffer机制(三)

    什么是shuffer 宽依赖之间会划分stage,而Stage之间就是Shuffle Spark在DAG调度阶段会...

  • 宽依赖和窄依赖

    窄依赖是指父RDD的每个分区只被子RDD的一个分区所使用,子RDD分区通常对应常数个父RDD分区(O(1),与数据...

  • 宽依赖和窄依赖

    在设计RDD的接口时,一个有意思的问题是如何表现RDD之间的依赖。在RDD中将依赖划分成了两种类型:窄依赖(nar...

  • spark容错

    传统的容错机制有两种:1.设计检查点2.记录数据的更新 在Spark中有宽依赖和窄依赖问题:窄依赖:父RDD的分区...

  • Spark中CartesianRDD依赖关系的特殊之处

    前言 RDD之间的依赖关系一般分为两种,宽依赖和窄依赖。 在网上好多博客中是这样描述宽依赖和窄依赖的特点 窄依赖每...

网友评论

    本文标题:spark的宽依赖和窄依赖,以及Stage

    本文链接:https://www.haomeiwen.com/subject/sstwgxtx.html