Hadoop MapReduce:默认的映射器数量

kee*_*kee 3 hadoop mapreduce

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

Avk*_*han 6

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

  1. 映射数通常由输入文件中的DFS块数驱动.虽然这会导致人们调整他们的DFS块大小来调整地图的数量.

  2. 地图的正确并行度似乎是大约10-100个地图/节点,尽管对于非常cpu-light地图任务,这可以达到300左右.任务设置需要一段时间,因此最好是地图至少需要一分钟才能执行.

  3. 您可以通过修改JobConf的conf.setNumMapTasks(int num)来增加Map任务的数量.注意:这可能会增加map任务的数量,但不会将数量设置为低于Hadoop通过拆分输入数据确定的数量.

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

因此,如果您期望10TB的输入数据并具有128MB的DFS块,那么除非您的mapred.map.tasks更大,否则最终会得到82k的映射.最终,InputFormat确定了地图的数量.

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

  • 似乎是hadoop wiki的直接副本.也许这个答案应该被解释,或者你可以使它更具体的问题. (6认同)

Chr*_*ite 5

这取决于许多因素:

  • 格式的输入格式和特定​​配置属性
  • 对于基于文件的输入格式(TextInputFormat,SequenceFileInputFormat等):
    • 输入文件/路径的数量
    • 是可拆分的文件(通常压缩文件不是,SequenceFiles是一个例外)
    • 块大小的文件

可能还有更多,但你希望得到这个想法