Spark Shuffle
Shuffle简介
Shuffle(数据混洗)是将一组无规则的数据转换为一组有规则的数据。Spark是一个分布式计算引擎,大多数的计算和数据转换过程是在多台计算机上执行的,当我们对RDD进行规约操作时,例如reduceByKey,或者当两个RDD之间是宽依赖的关系时,都会产生Shuffle。
Shuffle实现方案
Shuffle过程中会导致RDD进行重分区,在数据量情况较大情况下也会将数据序列到磁盘上,所以整个Shuffle过程会有大量的网络通信和磁盘IO,Shuffle的效率高低成为了Spark计算效率高低的关键。
Hash Shuffle
-
在
Spark1.6之前使用的Hash Shuffle -
Hash Shuffle原理图

- 过程解析
每一个MapTask会将数据按照key值进行hash然后按照ReduceTask需要的分区数进行分为指定个数的bucket,这里的bucket是内存缓存区,默认大小为100M,MapTask将数据平均的分布到每个bucket,当每个bucket快满了时(0.8),将bucket内存中的数据写入到block

最低0.47元/天 解锁文章
1136

被折叠的 条评论
为什么被折叠?



