0

我面临错误:Java 堆空间和错误:超出 GC 开销限制

所以我开始研究 hadoop-env.sh。

所以这就是我到目前为止所理解的,如果我错了,请纠正我。

if HADOOP_HEAPSIZE=7168 in hadoop-env.sh

这将调用datanode上的datanode守护进程和tasktracker守护进程,每个分配7GB内存(datanode(7GB)+ tasktracker(7GB)= 14GB)

mapred.tasktracker.reduce.tasks.maximum = 3
mapred.tasktracker.map.tasks.maximum = 6 and 
mapred.child.java.opts -Xmx1024m

所以这将调用 9 个具有 1GB 内存的子 JVM,所以总共 9GB

但是 tasktracker 是用 7GB 内存调用的,所以这会发生冲突。因为 tasktracker 调用的 tasktracker 和子 JVMS 的最大内存为 7GB,但它们正在消耗 9G。

所以发生了堆空间错误,我的计算是否正确?

4

0 回答 0