我在哪里设置mapreduce.job.jvm.numtasks配置?

时间:2014-10-19 06:45:25

标签: hadoop mapreduce

我正在阅读一本书(专业Hadoop解决方案),通过指定作业配置mapreduce.job.jvm.numtasks可以启用JVM重用。我的问题是我们需要在Driver类中设置它吗?

我尝试在mapreduce.Job对象中查找此配置,但我找不到它。可以在我正在使用的Hadoop版本的其他地方替换此API吗?或者我不是在寻找合适的地方?我正在使用Hadoop 1.0.3版。

我还试图寻找较旧的属性mapred.job.reuse.jvm.num.tasks,而我无法做到。

谢谢!

2 个答案:

答案 0 :(得分:2)

您的来源是指针对Hadoop 2.x(YARN)的较新的Hadoop配置API。在转向YARN的过程中,修改了许多配置名称。对于相关的Hadoop版本,here上的更改记录为the offical site(在本例中,亚马逊的Elastic MapReduce采用的是2.4.0版本)。

明确提到旧配置名称mapred.job.reuse.jvm.num.tasks已被新名称mapreduce.job.jvm.numtasks取代。

此外,MapReduce default configuration的文档对mapreduce.job.jvm.numtasks说明了这一点:

  

每个jvm运行多少个任务。如果设置为-1,则没有限制。

例如,可以在GrepCode上找到Hadoop 1.2.1(兼容配置API到1.0.3)的默认配置。

关于您的问题,在何处设置此属性。它可以设置

  • 表示${HADOOP_CONF_DIR}/mapred-site.xml
  • 中的整个群集
  • 或者您在Job(或JobContext)的配置中指定它,只要它未在群集中声明为 final job.getConfiguration().set("mapred.job.reuse.jvm.num.tasks","-1");

答案 1 :(得分:0)

您可以在mapred-site.xml中定义它:

<property>
    <name>mapred.job.reuse.jvm.num.tasks</name>
    <value>-1</value>
</property> 

当你有一个较短的任务运行一段时间时使用它。