如果我不指定映射器的数量,如何确定数量?是否有从配置文件(例如 mapred-site.xml)中读取的默认设置?

最佳答案

在 Chris 上面添加的内容中添加更多内容:

  • 映射的数量通常由输入文件中的 DFS 块的数量决定。虽然这会导致人们调整他们的 DFS 块大小来调整 map 的数量。
  • map 的正确并行度似乎是大约 10-100 个 map /节点,尽管对于非常 CPU 轻量级的 map task ,这可以达到 300 左右。任务设置需要一段时间,所以最好让 map 至少需要一分钟来执行。
  • 可以通过修改JobConf的conf.setNumMapTasks(int num)来增加Map任务的数量。注意:这可能会增加 map task 的数量,但不会将数量设置为低于 Hadoop 通过拆分输入数据确定的数量。

  • 最后控制贴图的数量是微妙的。 mapred.map.tasks 参数只是对 InputFormat map 数量的提示。默认的 InputFormat 行为是将总字节数拆分为正确数量的片段。但是,在默认情况下,输入文件的 DFS 块大小被视为输入拆分的上限。
    分割大小的下限可以通过 mapred.min.split.size 设置。

    因此,如果您希望有 10TB 的输入数据并且有 128MB 的 DFS 块,那么您最终会得到 82k 个 map ,除非您的 mapred.map.tasks 更大。 InputFormat 最终决定了映射的数量。

    阅读更多:http://wiki.apache.org/hadoop/HowManyMapsAndReduces

    关于Hadoop MapReduce : default number of mappers,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10591278/

    10-11 08:53