我面临错误: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。
所以发生了堆空间错误,我的计算是否正确?