【问题标题】:Increase or decrease of mappers in Map Reduce frame workMapreduce框架中mapper的增减
【发布时间】:2016-03-25 16:54:24
【问题描述】:

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

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

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

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

专家能否解释一下这个概念?

谢谢

【问题讨论】:

    标签: java hadoop mapreduce


    【解决方案1】:

    这应该对你有帮助

    地图数量

    map 的数量通常由输入文件中的 DFS 块的数量决定。虽然这会导致人们调整他们的 DFS 块大小以调整地图的数量。地图的正确并行度水平似乎在 10-100 个地图/节点左右,尽管对于非常 cpu-light 的地图任务,我们已将其提高到 300 左右。任务设置需要一段时间,因此最好至少花费一分钟来执行地图。

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

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 2018-08-02
    • 2022-01-22
    • 2020-10-05
    • 1970-01-01
    相关资源
    最近更新 更多