Spark与Hadoop Shuffle对比

【自取】最近整理的,有需要可以领取学习:

  • spark中只有特定的算子会触发shuffle,shuffle会在不同的分区间重新分配数据!
  • 如果出现了shuffle,会造成需要跨机器和executor传输数据,这样会导致 低效和额外的资源消耗!

2)
和Hadoop的shuffle不同的时,数据分到哪些区是确定的,但是在区内的顺序不一定有序!

Hadoop 的shuffle :
MapTask : map——- sort ——– merge
ReduceTask: copy —- sort —– reduce

shuffle阶段 : sort ——– merge —– copy —- sort

Spark的shuffle:
第一种表现: MapTask端也不排序, ReduceTask一定不排序!
第二种表现: MapTask端可以排序, ReduceTask一定不排序!

如果希望shuffle后的数据有序,可以以下操作:
a) 调用 mapPartitions,对每个分区的数据,进行手动排序!
b) repartitionAndSortWithinPartitions
c) sortBy

3)
什么操作会导致shuffle
a)重新分区的算子 : reparition, collase
b) xxxBykey类型的算子,除了 count(统计)ByKey
c) join类型的算子,例如 cogroup and join.

4)
在Spark中,shuffle会带来性能消耗,主要涉及 磁盘IO,网络IO,对象的序列化和反序列化!

总结:
①Spark的shuffle和Hadoop的shuffle目的都是为了 在不同的task交换数据!
② Spark的shuffle借鉴了hadoop的shuffle,但是在细节上略有不同
hadoop的shuffle: 在到达 ReduceTask端时,会进行排序!
在Spark中,数据在 ReduceTask端一定不排序,在 MapTask端,可以根据设置进行排序或不排!
③shuffle会消耗性能,因此能避免就避免,避免不了,采取一些优化的策略!

Original: https://www.cnblogs.com/itboys/p/14168903.html
Author: 大葱拌豆腐
Title: Spark与Hadoop Shuffle对比

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/8812/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部