我试图理解为什么map-duce在混洗和排序阶段在map端和duce端都进行隐式排序,这表现为内存和磁盘排序的混合(对于大型数据集来说可能非常昂贵)。
我担心的是,在运行map-duce作业时,性能是一个重要的考虑因素,在将mapper的输出抛到还原器之前,基于键的隐式排序将对处理大量数据时的性能产生很大影响。
我知道排序在某些情况下可以被证明是一个福音,但这并不总是正确的?那么,为什么Hadoop Map-Reduce中存在隐式排序的概念呢?
对于任何形式的参考,我所说的同时提到洗牌和排序阶段,请随意简要阅读这篇文章:Map-Reduce: Shuffle and Sort
在我的博客上:Hadoop-一些显著的理解
在张贴这个问题后,我后来想到的一个可能的解释是:
排序只是为了将与特定键对应的所有记录聚合在一起,以便与该单个键对应的所有这些记录都可以发送到单个还原器(Hadoop Map-Reduce中的默认分区逻辑)。因此,可以说,通过在Mapper阶段之后按键对所有记录进行排序,可以将与单个键对应的所有记录放在一起,其中键的排序顺序可以用于某些用例,例如对大型数据集进行排序。
如果人们能验证上述观点,那就太好了。谢谢。