Hadoop Shuffle阶段为什么要排序?Spark为什么采用Sort Shuffle?

8551 admin
世界杯历届冠军名单

问题

Hadoop shuffle阶段为什么要排序?

Spark Shuffle为什么从最初的Hash Shuffle改成了Sort Shuffle?

排序

对于数学运算来说,加减乘除是基本的运算符。而对于计算机计算处理数据来说,排序、查找等就是它的基本运算符。

列一些排序的应用:

查找某个元素在数组中的位置。可以将数组排序,之后二分查找

找出两个数组都包含的元素。可以将两个数组排序,然后循环对比

……

在数据处理时,基于有序数据的处理会比无序数据快很多。but,排序是需要时间和空间的。

所以涌现了很多优秀的排序算法,降低排序的代价。

Hadoop shuffle为什么要排序?

MapReduce在shuffle阶段会有两个地方发生排序:

map端溢写磁盘前会根据key排序

reduce端拉取分区数据后进行排序

reduce端排序

Reduce端需要对数据进行分组,将key相同的放在一起规约。为达到目的,有两种算法:hashmap和sort,前者太耗内存,而排序可以通过外排对任意数据量分组,只要磁盘数据量够大就行。

map端排序

map端排序是为了减轻reduce端排序的压力。

关于这个问题,更多的讨论可查看:

怎么解除手机号码绑定的支付宝? ( 我在支付宝绑定手机号码了该怎么退出 ) 白羊欣赏水瓶哪里(白羊座眼里的水瓶座)