Hadoop 中shuffle为什么要排序?
排序
对于数学运算来说,加减乘除是基本的运算符。而对于计算机计算处理数据来说,排序、查找等就是它的基本运算符。
列一些排序的应用:
查找某个元素在数组中的位置。可以将数组排序,之后二分查找
找出两个数组都包含的元素。可以将两个数组排序,然后循环对比
……
在数据处理时,基于有序数据的处理会比无序数据快很多。but,排序是需要时间和空间的。
所以涌现了很多优秀的排序算法,降低排序的代价。
Hadoop shuffle为什么要排序?
MapReduce在shuffle阶段会有两个地方发生排序:
map端溢写磁盘前会根据key排序
reduce端拉取分区数据后进行排序
reduce端排序
Reduce端需要对数据进行分组,将key相同的放在一起规约。为达到目的,有两种算法:hashmap和sort,前者太耗内存,而排序可以通过外排对任意数据量分组,只要磁盘数据量够大就行。
map端排序
map端排序是为了减轻reduce端排序的压力。
关于这个问题,更多的讨论可查看:Hadoop的MapReduce阶段为什么要进行排序?。
————————————————
版权声明:本文为CSDN博主「upupfeng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ifenggege/article/details/108024992