【问题标题】:How to set the number of map tasks in hadoop 0.20?hadoop 0.20如何设置map任务的数量?
【发布时间】:2011-09-19 21:48:28
【问题描述】:

我正在尝试设置要在 hadoop 0.20 环境中运行的地图任务数。

我正在使用旧的 api。

以下是我目前尝试过的选项:

    conf.set("mapred.tasktracker.map.tasks.maximum", "5");
    conf.set("mapred.map.tasks", "10");
    conf.set("mapred.map.tasksperslot", "5");
    conf.set("mapred.tasktracker.map", "5");
    conf.set("mapred.map.parallel.copies", "5");

所有这些都开启后,并行运行的 map 任务数量仍为 2。

为了使并行运行的映射器数量达到 5 个,正确设置哪些选项?

【问题讨论】:

    标签: java hadoop mapreduce


    【解决方案1】:

    TaskTracker.java

    maxCurrentMapTasks = conf.getInt("mapred.tasktracker.map.tasks.maximum", 2);

    根据"Hadoop : The Definitive Guide"。因此,在客户端设置属性是没有用的。需要在配置文件中设置。

    请注意,某些属性在客户端配置中设置时无效。为了 例如,如果在您的作业提交中,您将 mapred.tasktracker.map.tasks.maximum 设置为 期望它会改变运行你的工作的任务跟踪器的任务槽数,那么你会感到失望,因为只有这个属性才被尊重 如果在 tasktracker 的 mapred-site.html 文件中设置。一般来说,你可以告诉组件 属性应由其名称设置,因此 mapred.task.tracker.map.tasks.maximum 以 mapred.tasktracker 开头的事实为您提供了一个线索,即它可以 仅为 tasktracker 守护进程设置。然而,这并不是一个硬性规定,所以在 在某些情况下,您可能需要反复试验,甚至阅读源代码。

    【讨论】:

    • 您能否为 EMR 提供合适的配置脚本?
    • EMR 的配置脚本是什么意思?需要更多详细信息。
    • 在启动 Elastic Mapreduce 作业时,有可能在 hadoop 启动之前运行引导操作。我相信这可以用来设置映射器的数量,但我泄露了诀窍
    【解决方案2】:

    为了让答案与 Hadoop API 的变化保持同步,我列出了已弃用属性的新替代品。

    mapred.tasktracker.map.tasks.maximum => mapreduce.tasktracker.map.tasks.maximum
    mapred.map.tasks => mapreduce.job.maps
    

    查看link 以了解已弃用的 API 和新的 API

    但我更喜欢将地图任务的数量决策保留给框架本身,以获得更好的工作性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-18
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      相关资源
      最近更新 更多