我想知道专家对这种情况的回答:
说,我最多有3个64 MB的块,有150 MB的文件。默认情况下,3个映射器将启动我的Map Reduce。
如果想增加/减少映射器的数量命令是什么?
如果我尝试增加流程的中间部分会发生什么,因为我只有3个块要处理。一旦我开始处理它将需要新的映射器数量或它将如何表现?
专家可以对这个概念有所了解吗?
谢谢
答案 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
我不确定你是否可以在工作执行期间这样做;这必须在工作启动前处理