1

我是 MapReduce-hadoop 世界的新手。在配置和文档中,他们指定了映射器和缩减器的数量。它实际上是什么意思?我的疑问是:

  1. 是否指定将完成映射/减少的级别数。即,如果reducer 的编号=2。那么reduce 方法将被调用2 次。是吗?
  2. 是否指定并行工作的映射器/缩减器线程数,但每个映射/缩减只执行一次。

哪一个是正确的?或者它意味着别的东西。我很困惑..请回答我

4

2 回答 2

3

不,你完全错了。

  1. 指定maptasks的数量只是给框架一个提示,输入格式决定了输入split的数量,一个split =一个map task
  2. reduce 任务的数量表示映射输出键被划分的任务数,假设您有 1000 个不同的映射输出键和 5 个reduce 任务,那么每个reduce 任务将获得大约200 个键。对于每个键调用reduce函数,所以大约。在我的示例中,每个减少任务 200 次。
  3. maptasks、reduce 任务的数量并没有说明并行化。每个节点的并行线程数由 tasktracker 确定。因此,您应该指定可供 tasktracker 并行运行的 map 和 reduce 插槽的数量。这是用 配置的mapred.tasktracker.map|reduce.tasks.maximum。请注意,reducer(在插槽中)将执行任务。所以相应地配置reduce slot的数量和reduce任务的数量是很重要的。如果你总共有 10 个 reduce 槽,你还需要至少 10 个 reduce 任务,否则一些槽会空闲。
于 2013-10-30T10:30:50.320 回答
1

由于您是 Map-Reduce 的新手,我坚信您需要阅读本文:http: //static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en//archive/mapreduce-osdi04.pdf

一旦范式被清楚地理解,你们中的大多数疑问都会被清除。它是完美的起点。

于 2013-10-30T10:36:40.903 回答