我遇到错误: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
但是使用7GB内存调用tasktracker,所以这将发生冲突。由tasktracker调用的tasktracker和子JVMS的最大内存为7GB,但它们消耗9G。
所以堆空间错误发生了,我的计算是否正确?