map-reduce中映射器阶段之后的隐式排序背后的动机

时间:2012-11-28 05:39:52

标签: sorting hadoop mapreduce mergesort

我试图理解为什么map-reduce在地图一侧和减少一侧的混洗和排序阶段都进行隐式排序,这表现为内存中和外部的混合。磁盘排序(对于大型数据集来说可能非常昂贵)。

我担心的是,在运行map-reduce作业时,性能是一个重要的考虑因素,并且在将映射器的输出抛出到reducer之前基于键的隐式排序将在处理大型集合时对性能产生很大影响数据的。

据我所知,在明确要求的某些情况下,排序可以证明是一种福音,但这并非总是如此?那么,为什么隐式排序的概念存在于Hadoop Map-Reduce中?

对于我所谈论的内容的任何提及,同时提及随机播放和排序阶段,请随时在帖子中简要阅读:Map-Reduce: Shuffle and SortHadoop-Some Salient Understandings

1 个答案:

答案 0 :(得分:0)

在发布这个问题之后很久以后我想到的一个可能的解释是:

完成排序只是为了聚合对应于特定键的所有记录,以便对应于该单个键的所有这些记录可以被发送到单个reducer(Hadoop Map-Reduce中的默认分区逻辑)。因此,可以说通过在Mapper阶段之后按键对所有记录进行排序只允许将对应于单个键的所有记录放在一起,其中按排序顺序的键的顺序可能仅用于某些用例,例如对大量数据进行排序。

如果人们可以在他们认为相同的情况下验证上述情况,那就应该很棒。感谢。