【发布时间】:2016-05-24 05:42:49
【问题描述】:
我有一个 1GB 的文件。它是一个简单的文本文件。我有一个 3 节点集群。如果我编写一个 Java MapReduce 程序来计算每个单词的出现次数,那么 Mappers Map() 将被调用多少次,而 Reducers reduce 方法将被调用多少次?
【问题讨论】:
我有一个 1GB 的文件。它是一个简单的文本文件。我有一个 3 节点集群。如果我编写一个 Java MapReduce 程序来计算每个单词的出现次数,那么 Mappers Map() 将被调用多少次,而 Reducers reduce 方法将被调用多少次?
【问题讨论】:
首先,集群的大小并不重要。这将导致一些冗余调用,只是为了容错,但我想这不是你的问题。所以,如果你有一个 1 节点集群或 100 节点集群,map 和 reduce 任务的数量将相同,结果也会相同。
现在,对于 map 任务的数量,这取决于一些因素,例如块的大小和输入的格式。您可以在this article找到有关映射器数量的详细信息。
现在对于 reduce 方法将被调用的次数,这更容易定义。在 wordcount 程序中,映射器的输出键是一个单词。因此,每个不同的单词最终都会对 reduce 方法进行不同的调用。换句话说,reduce 方法被调用的次数等于数据集中存在的不同单词的数量。
【讨论】: