我在Amazon EMR上运行了one Master
和two slavers
的MR作业,但在running beyond physical memory limits. Current usage: 3.0 GB of 3 GB physical memory used; 3.7 GB of 15 GB virtual memory used. Killing container
map 100% reduce 35%
我通过在Hadoop 2.6.0 MR配置中添加以下行来修改我的代码,但我仍然收到相同的错误消息。
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "jobtest2");
//conf.set("mapreduce.input.fileinputformat.split.minsize","3073741824");
conf.set("mapreduce.map.memory.mb", "8192");
conf.set("mapreduce.map.java.opts", "-Xmx8192m");
conf.set("mapreduce.reduce.memory.mb", "8192");
conf.set("mapreduce.reduce.java.opts", "-Xmx8192m");
在Amazon EMR上配置这些参数(mapreduce.map.memory.mb
,mapreduce.map.java.opts
,mapreduce.reduce.memory.mb
,mapreduce.reduce.java.opts
)的正确方法是什么?谢谢!
答案 0 :(得分:3)
Hadoop 2.x允许您设置地图并减少每个作业的设置,以便设置正确的部分。问题是Java opts Xmx内存必须小于map / reduce.memory.mb。此属性表示堆和堆使用的总内存。以默认值为例:http://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-hadoop-task-config.html。如果Yarn在使用默认设置时杀掉容器以超出内存,那么这意味着您需要为off heap部分提供更多内存,从而增加Xmx与总map / reduce.memory.mb之间的差距。
答案 1 :(得分:1)
查看AWS {CLI} the documentation。有关Hadoop的部分以及如何在EMR实例创建时映射到特定的XML配置文件。我发现这是EMR上最好的方法。