|NO.Z.00096|——————————|BigDataEnd|——|Hadoop&Spark.V12|——|Spark.v12|Spark 原理 源码|Shuffle详解&Spark Shuffle的两个阶段&Spark Shuffle技术演进|

一、Shuffle详解
### --- shuffle详解

~~~     在 Spark 或 MapReduce 分布式计算框架中,数据被分成一块一块的分区,
~~~     分布在集群中各节点上,每个计算任务一次处理一个分区,
~~~     当需要对具有某种共同特征的一类数据进行计算时,就需要将集群中的这类数据汇聚到同一节点。
~~~     这个按照一定的规则对数据重新分区的过程就是Shuffle。
二、Spark Shuffle的两个阶段
### --- Spark Shuffle的两个阶段

~~~     对于Spark来讲,一些Transformation或Action算子会让RDD产生宽依赖,
~~~     即Parent RDD中的每个Partition被childRDD中的多个Partition使用,这时需要进行Shuffle,
~~~     根据Record的key对parent RDD进行重新分区。
~~~     以Shuffle为边界,Spark将一个Job划分为不同的Stage。
~~~     Spark的Shuffle分为Write和Read两个阶段,分属于两个不同的Stage,
~~~     前者是Parent Stage的最后一步,后者是Child Stage的第一步。
三、Spark Shuffle执行流程图
### --- Spark 的 Stage 分为两种:

~~~     ResultStage。负责返回计算结果
~~~     ShuffleMapStage。其他的均为ShuffleMapStage
### --- 如果按照 map 端和 reduce 端来分析的话:

~~~     ShuffleMapStage可以即是map端任务,又是reduce端任务
~~~     ResultStage只能充当reduce端任务
### --- Spark Shuffle的流程简单抽象为以下几步:

~~~     Shuffle Write
~~~     Map side combine (if needed)
~~~     Write to local output file
~~~     Shuffle Read
~~~     Block fetch
~~~     Reduce side combine
~~~     Sort (if needed)
四、Spark Shuffle技术演进
### --- 在Spark Shuffle的实现上,经历了Hash、Sort、Tungsten-Sort三阶段:

~~~     Spark 0.8及以前 Hash Based Shuffle
~~~     Spark 0.8.1 为Hash Based Shuffle引入File Consolidation机制
~~~     Spark 0.9 引入ExternalAppendOnlyMap
~~~     Spark 1.1 引入Sort Based Shuffle,但默认仍为Hash Based Shuffle
~~~     Spark 1.2 默认的Shuffle方式改为Sort Based Shuffle
~~~     Spark 1.4 引入Tungsten-Sort Based Shuffle
~~~     Spark 1.6 Tungsten-sort并入Sort Based Shuffle
~~~     Spark 2.0 Hash Based Shuffle退出历史舞台
### --- 简单的说:

~~~     Spark 1.1 以前是Hash Shuffle
~~~     Spark 1.1 引入了Sort Shuffle
~~~     Spark 1.6 将Tungsten-sort并入Sort Shuffle(利用对外内存进行排序)
~~~     Spark 2.0 Hash Shuffle退出历史舞台

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(29)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示