【问题标题】:Hadoop 1.0.3 mapred.map.tasks property not workingHadoop 1.0.3 mapred.map.tasks 属性不起作用
【发布时间】:2013-01-08 02:35:36
【问题描述】:

我正在使用 hadoop 1.0.3 运行 map reduce 作业。我有一个 3 节点集群设置。问题是我在 /conf/mapred-site.xml 中将属性 mapred.map.tasks 设置为 20,但是当我运行作业并使用以下网页访问集群信息时,hadoop 仅显示 6 个地图任务: 50030。我已经在集群中的所有节点上编辑了上述配置文件。请帮忙。

问候, 莫辛

【问题讨论】:

  • 输入数据有多大?如果将输入数据拆分为 n 个拆分,则 Hadoop 将仅映射 n 个任务,不会更多。
  • 输入分割数为 764。
  • @PraveenSripati 我想设置并行地图任务的数量。我可以在我的 Web 控制台中看到它有 764 个地图任务。但运行地图任务只有 6 个。

标签: hadoop mapreduce


【解决方案1】:

这个问题似乎与Setting the number of map tasks and reduce tasks 重复。

Hadoop does not honor mapred.map.tasks beyond considering it a hint.

看到这个information on the Hadoop wiki

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

也就是说 Hadoop 确实接受指定的用户 mapred.reduce.tasks 并且不会对其进行操作。

总而言之,对于给定的 MapReduce 作业,您不能强制使用 mapred.map.tasks,但可以强制使用 mapred.reduce.tasks

编辑:稍微超出您的直接问题,有一种方法可以间接强制 Hadoop 使用更多映射器。这涉及适当地设置mapred.min.split.sizedfs.block.sizemapred.max.split.size 的组合。请注意,输入文件的实际大小也在这里起作用。请参阅 this answer for details,它基本上引用了 Tom White 的 Hadoop:The Definite Guide 一书。

【讨论】:

    【解决方案2】:

    正如 miguno 所说,Hadoop 仅将 mapred.map.tasks 的值视为提示。

    话虽如此,当我在使用 MapReduce 时,我能够通过指定最大计数来增加映射计数。这可能不适合你,但你可以试一试。

    <property>
        <name>mapred.tasktracker.map.tasks.maximum</name>
        <value>60</value>
    </property>
    

    注意:此值表示地图的总数量。因此,如果您希望每个 (3) 节点运行 20 个地图,则必须指定 mapred.map.tasks,如下所示:

    <property>
        <name>mapred.map.tasks</name>
        <value>20</value>
    </property>
    

    【讨论】:

    • 这就像一个魅力 :) 实际上,我对这些值进行了更多试验,发现我也可以为各个节点设置 mapred.tasktracker.map.tasks.maximum 属性。例如,在我们有几个重型配置节点和一些轻型配置节点的集群的情况下。 @Uirri 提到的上述两个属性都对每个节点单独起作用。
    【解决方案3】:

    它主要是决定地图任务数量的输入格式。 http://wiki.apache.org/hadoop/HowManyMapsAndReduces

    对于您的问题,默认情况下,任务跟踪器运行两个 map |同时减少任务。
    要更改它,请在 /conf/mapred-site.xml 中设置属性 mapred.map.tasks.maximum

    。建议使用公式 (CPUS > 2) ? (CPUS * 0.75) : 1 同时设置。

    【讨论】:

      猜你喜欢
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 2016-02-06
      • 2011-03-31
      • 2018-11-19
      • 2012-07-23
      • 2016-07-16
      • 2020-01-24
      相关资源
      最近更新 更多