我想知道专家对这种情况的回答:
比方说,我有150 MB的文件,最多3个64MB的块。默认情况下,3个映射器将启动我的Map Reduce。
如果要增加/减少映射器的数量,命令是什么?
如果我试图增加进程的中间部分,将会发生什么,因为我只有3个块要处理。一旦我开始处理,它将需要新数量的映射器,或者它将如何表现?
专家们能为这个概念提供一些启示吗?
感谢
这应该有助于
地图数量
映射的数量通常由输入文件中DFS块的数量驱动。尽管这会导致人们调整他们的DFS块大小来调整映射的数量。地图的正确并行度水平似乎在10-100个地图/节点左右,尽管我们已经将其提高到300个左右,用于非常cpu的轻地图任务。任务设置需要一段时间,因此最好至少需要一分钟的时间来执行映射。
实际上,控制地图的数量是很微妙的。mapred.map.tasks参数只是对InputFormat的映射数量的提示。默认的InputFormat行为是将字节总数拆分为适当数量的片段。然而,在默认情况下,输入文件的DFS块大小被视为输入拆分的上限。拆分大小的下限可以通过mapred.min.split.size设置。因此,如果您期望10TB的输入数据和128MB的DFS块,则最终会得到82k个映射,除非您的mapred.map.tasks更大。InputFormat最终决定了贴图的数量。
也可以使用JobConf的conf.setNumMapTasks(int num)手动增加映射任务的数量。这可以用来增加映射任务的数量,但不会将数量设置为低于Hadoop通过拆分输入数据确定的数量。
更多详细信息,请访问-https://wiki.apache.org/hadoop/HowManyMapsAndReduces
我不确定你是否能在工作执行期间做到这一点;这必须在作业启动