1

我试图理解为什么map-reduce在map端和reduce端的洗牌和排序阶段进行隐式排序,表现为内存和磁盘排序的混合(对于大量数据来说可能真的很昂贵)。

我担心的是,在运行 map-reduce 作业时,性能是一个重要的考虑因素,在处理大量数据时,在将 mapper 的输出扔给 reducer 之前基于键的隐式排序将对性能产生很大影响。

我知道在某些明确要求排序的情况下,排序可以证明是一种恩惠,但这并不总是正确的?那么,Hadoop Map-Reduce 中为什么存在隐式排序的概念呢?

对于我在提到 shuffle 和 sort 阶段时所谈论的内容的任何类型的参考,请随时简要阅读这篇文章:Map-Reduce: Shuffle and Sort在我的博客上:Hadoop-Some Salient Understandings

4

1 回答 1

0

在发布此问题后很久才想到的对上述问题的一种可能解释是:

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

如果大家的想法一样的话,能验证一下,那就太好了。谢谢。

于 2013-01-12T19:03:35.267 回答