Configuration 以编程方式设置hadoop作业配置

Configuration 以编程方式设置hadoop作业配置,configuration,hadoop,mapreduce,Configuration,Hadoop,Mapreduce,我得到reduce子级的OOM异常(Java堆空间)。我在文档中读到,将mapred.reduce.child.java.opts的值增加到-Xmx512M或更高会有所帮助。因为我不是管理员,所以无法在mapred-site.xml中更改该值。我只想通过java程序为我的工作设置该值。我尝试使用Configuration类进行如下设置,但没有成功 Configuration config=new Configuration(); config.set(“mapred.reduce.child.j

我得到reduce子级的OOM异常(Java堆空间)。我在文档中读到,将
mapred.reduce.child.java.opts的值增加到-Xmx512M或更高会有所帮助。因为我不是管理员,所以无法在mapred-site.xml中更改该值。我只想通过java程序为我的工作设置该值。我尝试使用
Configuration
类进行如下设置,但没有成功

Configuration config=new Configuration();
config.set(“mapred.reduce.child.java.opts”,“-Xmx512M”);
JobConf conf1=newjobconf(config,this.getClass())

Hadoop的版本是1.0.3


以编程方式设置配置值的正确方法是什么?

正如@ThomasJungblut和@octo所指出的,我在问题中提到的过程是正确的方法。OOM异常仍然存在,因此我将启动一个新线程,而不是在这里继续。

实际上是这样工作的(如果您使用的是旧的API映射器和减速器)。@ThomasJungblut抱歉,但是,它是如何工作的?我不明白“这样工作”的评论。就像你在那里发布的那样。如何检查内存是否设置不正确?您应该检查服务器mapred-site.xml中的mapred.reduce.child.java.opts是否未标记为“final”。如果已标记,则无法更改it@ThomasJungblut好啊您的问题让我使用config.get(“mapred.child.java.opts”)检查了“mapred.child.java.opts”的值,得到了正确的值-Xmx200m。因此,我认为我设置的方式是正确的,但可能512m是不够的。我尝试使用1024m,但再次出现堆空间错误。我读到“mapred.child.java.opts”适用于1.0.3之前的版本。对吗?