如何在java代码中更改Hadoop映射任务的堆大小?

时间:2013-10-30 22:51:38

标签: hadoop mapreduce

如下面的链接所示,map任务的堆大小的默认值是200 MB,但是我需要增加它,因为我需要将mapreduce.task.io.sort.mb增加到至少300或400MB。我无法访问Hadoop配置文件以进行此类更改,因此我必须在我的代码中执行此操作。我怎么能这样做?

http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

2 个答案:

答案 0 :(得分:5)

我们可以通过Configuration API设置参数。

Configuration conf = new Configuration();
conf.set("mapred.child.java.opts", "heap size here");
Job job = new Job(conf);

此外,mapred.child.ulimit应比mapred.child.java.opts中指定的堆大小高2-3倍

答案 1 :(得分:-1)

为了以编程方式设置/ chnage hadoop配置,您可以按如下方式设置驱动程序类:

    public class MyDriver extends Configured implements Tool {


        @Override
        public int run(String[] args) throws Exception {

                Configuration conf = getConf();

                conf.set("mapred.child.java.opts", "-Xmx1024m -Xss600m");
                conf.set("mapreduce.task.io.sort.mb", "400m");
...

    }
    }