在Map Reduce框架工作中增加或减少映射器

时间:2016-03-25 06:56:55

标签: java hadoop mapreduce

我想知道专家对这种情况的回答:

说,我最多有3个64 MB的块,有150 MB的文件。默认情况下,3个映射器将启动我的Map Reduce。

如果想增加/减少映射器的数量命令是什么?

如果我尝试增加流程的中间部分会发生什么,因为我只有3个块要处理。一旦我开始处理它将需要新的映射器数量或它将如何表现?

专家可以对这个概念有所了解吗?

谢谢

1 个答案:

答案 0 :(得分:0)

这应该可以帮到你

地图数量

映射数通常由输入文件中的DFS块数驱动。虽然这会导致人们调整他们的DFS块大小来调整地图的数量。地图的正确并行度似乎大约是10到100个地图/节点,尽管我们已经将它达到300左右,用于非常cpu-light地图任务。任务设置需要一段时间,因此最好是地图至少需要一分钟才能执行。

实际控制地图的数量是微妙的。 mapred.map.tasks参数只是输入地图数量的一个提示。默认的InputFormat行为是将总字节数拆分为正确数量的片段。但是,在默认情况下,输入文件的DFS块大小被视为输入拆分的上限。可以通过mapred.min.split.size设置拆分大小的下限。因此,如果您期望10TB的输入数据并具有128MB的DFS块,那么除非mapred.map.tasks更大,否则最终会得到82k的映射。最终,InputFormat决定了地图的数量。

也可以使用JobConf的conf.setNumMapTasks(int num)手动增加map任务的数量。这可用于增加地图任务的数量,但不会将数字设置为低于Hadoop通过拆分输入数据确定的数量。

更多详情请见 - https://wiki.apache.org/hadoop/HowManyMapsAndReduces

我不确定你是否可以在工作执行期间这样做;这必须在工作启动前处理