我正试图在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吗?
答案 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