我面临错误: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个子JVM,内存为1gb,总计9gb
但是tasktracker是用7gb内存调用的,所以这会发生冲突。因为tasktracker调用的tasktracker和子jvm的最大内存是7gb,但它们消耗的内存是9g。
所以发生了堆空间错误,我的计算正确吗?
暂无答案!
目前还没有任何答案,快来回答吧!