我已经用3个工作程序配置了Apache Hadoop2.7.x。我遇到了
这样的异常java.lang.OutOfMemoryError: GC overhead limit exceeded
经过search之后,我发现我应该增加JVM堆大小。为此,hadoop中有三个参数,分别是1. mapred.child.java.opts
,2. mapreduce.map.java.opts
,3. mapreduce.reduce.java.opts
。根据我的理解,最后两个参数是mapreduce jvm,即我创建的在hadoop上运行的jar。我分别将这些参数设置为mapreduce.map.memory.mb
和mapreduce.reduce.memory.mb
的0.8%。
现在的问题是我可以为mapred.child.java.opts
设置什么最大值以及在哪里使用它。这是GC报告或映射/减少堆的问题吗?
在资源(即特别是内存)的上下文中,map-reduce JVM与容器的关系又是什么?我可以为mapred.child.java.opts
赋予mapreduce.amp.java.opts
的最大值?不应超过mapreduce.map.memory.mb
。
我已经审查了类似的post,但很遗憾,它无法阐明我的理解。