如果我没有指定地图制作者的数量,该数字将如何确定?是否从配置文件(例如mapred-site.xml)读取默认设置?
答案 0 :(得分:6)
在Chris上面添加更多内容:
映射数通常由输入文件中的DFS块数驱动。虽然这会导致人们调整他们的DFS块大小来调整地图的数量。
地图的正确并行度似乎在10-100个地图/节点之间,尽管对于非常cpu-light地图任务,这可以达到300左右。任务设置需要一段时间,因此最好是地图至少需要一分钟才能执行。
您可以通过修改JobConf的conf.setNumMapTasks(int num)来增加Map任务的数量。注意:这可能会增加地图任务的数量,但不会将数字设置为低于Hadoop通过拆分输入数据确定的数量。
最后控制地图的数量是微妙的。 mapred.map.tasks参数只是输入地图数量的一个提示。默认的InputFormat行为是将总字节数拆分为正确数量的片段。但是,在默认情况下,输入文件的DFS块大小被视为输入拆分的上限。 可以通过mapred.min.split.size设置拆分大小的下限。
因此,如果您期望10TB的输入数据并具有128MB的DFS块,那么除非mapred.map.tasks更大,否则最终会得到82k的映射。最终,InputFormat决定了地图的数量。
答案 1 :(得分:5)
这取决于许多因素:
可能还有更多,但你希望得到这个想法