如何告诉MapReduce可以同时使用多少个映射器?

时间:2011-09-19 12:56:25

标签: java hadoop mapreduce

我正在为MapReduce编写索引应用程序。 我能够用NLineInputFormat分割输入,现在我的应用程序中有几百个映射器。但是,只有2 / mashine同时活跃,其余的是“PENDING”。我相信这样的行为会大大减慢应用程序的速度。

如何让每台机器同时运行至少100个hadoop?

我正在使用旧的hadoop api语法。这是我到目前为止所尝试的内容:

    conf.setNumMapTasks(1000);
    conf.setNumTasksToExecutePerJvm(500);

这些似乎没有任何效果。

我有什么想法可以让映射器实际上并行运行?

1 个答案:

答案 0 :(得分:2)

JobConf.setNumMapTasks()只是对MR框架的暗示,我不确定调用它的效果。在您的情况下,整个作业中的地图任务总数应等于输入中的总行数除以NLineInputFormat中配置的行数。您可以在整个作业here中找到有关map / reduce任务总数的更多详细信息。

mapred.tasktracker.map.tasks.maximum的说明

  

任务跟踪器将同时运行的最大映射任务数。

您需要将mapred.tasktracker.map.tasks.maximum(默认为2)配置为更改任务跟踪器在特定节点上并行运行的地图任务数。我无法获得0.20.2的文档,因此我不确定参数是否存在或者是否在0.20.2版本中使用了相同的参数名称。