如何在EMR hadoop流媒体作业中更改内存

时间:2014-06-06 23:19:28

标签: memory hadoop streaming emr

我正试图在EMR上的hadoop流媒体作业中克服以下错误。

Container [pid=30356,containerID=container_1391517294402_0148_01_000021] is running beyond physical memory limits

我尝试寻找答案,但我找到的答案却无效。我的工作如下所示启动。

hadoop jar ../.versions/2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar \
 -input  determinations/part-00000 \
 -output  determinations/aggregated-0 \
 -mapper cat \
 -file ./det_maker.py \
 -reducer det_maker.py \
 -Dmapreduce.reduce.java.opts="-Xmx5120M"

据我所知,上面的最后一行应该可以解决问题,但我收到了错误:

ERROR streaming.StreamJob: Unrecognized option: -Dmapreduce.reduce.java.opts="-Xmx5120M"

更改内存使用情况的正确方法是什么? 还有一些文档可以解释像我这样的n00bs吗?

1 个答案:

答案 0 :(得分:3)

您尚未详细说明您正在运行低,物理或虚拟的内存。

对于这两个问题,请查看亚马逊的文档: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/TaskConfiguration_H2.html

通常解决方案是增加每个映射器的内存量,并可能减少映射器的数量:

s3://elasticmapreduce/bootstrap-actions/configure-hadoop -m mapreduce.map.memory.mb=4000
s3://elasticmapreduce/bootstrap-actions/configure-hadoop -m mapred.tasktracker.map.tasks.maximum=2