1

我有一个 Hadoop Map-reduce 应用程序,其代码中有以下行(将 reducer 的数量设置为 1)。

job.setNumReduceTasks(1)

我想用多个减速器运行这个应用程序,所以我尝试将以下 XML 代码添加到$HADOOP_CONF_DIR/mapred-site.xml

 <property>
  <name>mapreduce.job.reduces</name>
  <value>2</value>
 </property>

但是,代码仍然使用 1 个 reducer 运行。有没有办法强制hadoop应用程序使用2个reducer运行或者应用程序代码的优先级总是更高?

4

2 回答 2

2

在这种情况下,您需要修改代码,因为调用job.setNumReduceTasks(1)优先于任何配置或命令行传递的属性

于 2013-12-20T12:37:08.013 回答
0

您可以在提交应用程序时(通过命令行)传递减速器的数量。通过命令行传递配置参数比通过应用程序代码(第二高优先级)和通过 xml 文件(第三优先级)传递配置参数具有最高优先级

使用 -D 选项并设置值。

例如: $ bin/hadoop jar /usr/joe/wordcount.jar org.myorg.WordCount /usr/joe/wordcount/input /usr/joe/wordcount/output -D mapred.reduce.tasks=2

于 2016-01-27T06:27:24.750 回答