2

如以下链接所述,映射任务的堆大小的默认值为 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

4

2 回答 2

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 倍

于 2013-10-31T04:51:49.310 回答
-1

为了以编程方式设置/更改 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");
...

    }
    }
于 2013-10-31T04:53:19.907 回答