我在一本书(专业Hadoop解决方案)中读到,可以通过指定作业配置mapreduce.job.jvm.numtasks
来启用JVM重用。我的问题是,我们需要在Driver类中设置这个吗?
我尝试在mapreduce.Job
对象中查找此配置,但找不到。在我使用的Hadoop版本中,此API是否可以在其他位置替换?还是我找不到合适的地方?我使用的是Hadoop1.0.3版本。
我还试图寻找旧的物业mapred.job.reuse.jvm.num.tasks
,但我找不到。
谢谢!
您的源代码指的是Hadoop2.x(YARN)的较新Hadoop配置API。在向YARN转变的过程中,许多配置名称都进行了修改。相关Hadoop版本的官方网站上记录了这些更改(在本例中,亚马逊的Elastic MapReduce采用了2.4.0版本)
它明确提到旧的配置名称mapred.job.reuse.jvm.num.tasks
已被新名称mapreduce.job.jvm.numtasks
所取代。
此外,MapReduce默认配置的文档中对mapreduce.job.jvm.numtasks
:有这样的说明
每个jvm要运行的任务数。如果设置为-1,则没有限制。
Hadoop 1.2.1的默认配置(API到1.0.3的兼容配置)可以在GrepCode上找到。
关于您的问题,在哪里设置此属性。可以设置
- 对于CCD_ 7中的整个簇
- 或者您在作业(或JobContext)的配置中指定它,只要它没有在集群中声明为final:
job.getConfiguration().set("mapred.job.reuse.jvm.num.tasks","-1");
您可以在mapred-site.xml中定义它:
<property>
<name>mapred.job.reuse.jvm.num.tasks</name>
<value>-1</value>
</property>
当您有较短的任务运行一段时间时,请使用它。