0

我对亚马逊网络服务上的弹性 mapreduce 有疑问。你们中是否有人能够设置以下环境参数:

mapreduce.map/reduce.java.opts

问题是当我检查映射器和减速器的虚拟机中的堆大小时,最大堆大小不受设置这些影响。我通过在我的 map/reduce 代码中添加以下几行来检查堆大小:

runtime = Runtime.getRuntime();
System.out.println(runtime.maxMemory()); 

我使用带有以下参数的命令行界面设置它们:

-bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop --args "-m,mapreduce.map.java.opts=-Xmx1000m,-m,mapreduce.reduce.java.opts=-Xmx3000m"

我检查了 Amazon EMR 上的 hadoop 版本如下:1.0.3(我检查了 Tom White 的参考书,它说应该从 hadoop 0.21 开始支持这些。)

虽然可以设置子进程的 VM 设置(=mapper 和 reducer 相同 -> mapred.child.java.opts),但这对于我的算法非常不方便,因为 reducer 必须存储一个大的 hashmap 而映射器没有任何故事。

可能与这个问题有关:如果您设置了不受支持的环境变量,是否有可能收到警告。当我设置上述变量时,它们可以被访问,但它们显然不被使用/支持。(configuration.get(...)返回我设置的值)

4

1 回答 1

1

如果您查看该hadoop-1.0.3/docs文件夹,您会发现一个名为 mapred_tutorial.html 的文件。在“任务执行和环境”部分,该文档告诉您使用以下内容:

mapred.{map|reduce}.child.java.opts

他们更改了配置名称,因此mapreduce.map/reduce.java.opts来自 hadoop-0.21.0 的文件在较新的 hadoop-1.0.3 上不再起作用。

于 2013-09-11T17:17:41.180 回答