首页 > 解决方案 > Apache Hadoop 2.7.x 中容器堆和 jvm 堆之间的混淆

问题描述

我已经为 Apache Hadoop 2.7.x 配置了 3 个工作人员。我遇到了一些例外,比如

java.lang.OutOfMemoryError: GC overhead limit exceeded

经过一番搜索,我发现我应该增加我的 JVM 堆大小。为此,hadoop 中有三个参数,即1. mapred.child.java.opts, 2. mapreduce.map.java.opts, 3. mapreduce.reduce.java.opts。根据我的理解,最后两个参数是mapreduce jvm,即我创建的用于在hadoop上运行的jar。我已将这些参数分别设置为 0.8%mapreduce.map.memory.mb和0.8% 左右mapreduce.reduce.memory.mb

现在的问题是我可以设置的最大值mapred.child.java.opts以及它的使用位置。这是 GC 报告的问题还是映射/减少堆的问题。

此外,在资源(尤其是内存)的上下文中,map-reduce JVM 与容器的关系是什么。mapred.child.java.opts我可以以与 for 类似的方式给出的最大值是多少mapreduce.amp.java.opts;它不应该更多mapreduce.map.memory.mb。我已经查看了类似的帖子,但不幸的是它无法澄清我的理解。

标签: javahadoopjvmout-of-memoryhadoop2

解决方案


推荐阅读