【问题标题】:MapReduce - What is the benefit in the word count exampleMapReduce - 字数统计示例有什么好处
【发布时间】:2011-09-16 10:51:32
【问题描述】:

我想了解 MapReduce 有什么好处,我只是第一次阅读了一些关于它的介绍。

他们都使用这个在大量文档中计算单词的规范示例,但我没有看到好处。以下是我目前的理解,如有错误请指正。

我们指定输入文件(文档)的列表。 MapReduce 库获取此列表并将其分配给集群中的处理器。处理器上的每个文档都被传递给 map 函数,在这种情况下,该函数返回一个对列表。

这是我有点不确定到底发生了什么的地方。 然后库软件搜索所有不同处理器上的结果集,并将具有相同单词(键)的这些对组合在一起。这些组在不同的处理器上收集,并在该处理器的每个组上调用 reduce。

然后在主节点上收集组合结果。

这是正确的解释吗?

我不明白的是,因为有必要对所有结果进行排序以分组键,为什么不只计算它同时找到的键,为什么需要 reduce 呢?当查找和组合公共密钥似乎需要大量工作时,此过程如何节省时间?

【问题讨论】:

  • 我认为您的考虑范围很小。想象一下像谷歌新闻这样的东西,以及将文章聚合和分组在一起需要什么。
  • reduce 是需要的,因为数据分散在许多节点上。无论如何,字数都是一个玩具例子......

标签: mapreduce


【解决方案1】:

这是YouTube Video 中有关 MapReduce 算法的精彩视频,如果您观看完整的 5 个视频系列,它将让您更清楚地了解 MapReduce 并回答您的大部分问题。

我不明白的是,因为有必要对所有结果进行排序以分组键,为什么不只计算它同时找到的键,为什么根本需要 reduce?当查找和组合公用密钥似乎需要大量工作时,此过程如何节省时间?

由于特定单词(例如单词计数示例中的“sample”)的键/值对可能由不同的地图任务发出并分布在不同的节点上,因此这些键/值对需要在发送到之前进行合并/排序减少任务。特定键的 Reduce 任务在单个节点上运行,并且不是分布式的。

仅供参考,map 任务的结果使用与 map 任务在同一节点上的 combiner 类(与 reducer 类相同)进行组合,以减少 mapper 和 reducer 之间的网络通信。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多