Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于hadoop-env.sh的问题_Java_Hadoop_Hadoop Streaming_Hadoop Partitioning_Hadoop2 - Fatal编程技术网

Java 关于hadoop-env.sh的问题

Java 关于hadoop-env.sh的问题,java,hadoop,hadoop-streaming,hadoop-partitioning,hadoop2,Java,Hadoop,Hadoop Streaming,Hadoop Partitioning,Hadoop2,我面临错误:Java堆空间和错误:超出GC开销限制 所以我开始研究hadoop-env.sh 这就是我到目前为止所理解的,如果我错了,请纠正我 if HADOOP_HEAPSIZE=7168 in hadoop-env.sh 这将在datanode上调用datanode守护程序和tasktracker守护程序,并为每个守护程序分配7GB内存(datanode(7GB)+tasktracker(7GB)=14GB) 及 这将调用9个子JVM,内存为1GB,总共为9GB 但是tasktracker

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

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

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

if HADOOP_HEAPSIZE=7168 in hadoop-env.sh
这将在datanode上调用datanode守护程序和tasktracker守护程序,并为每个守护程序分配7GB内存(datanode(7GB)+tasktracker(7GB)=14GB)

这将调用9个子JVM,内存为1GB,总共为9GB

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

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

参考[但我也读取了总ram=(映射器+还原器)*子任务堆+DN堆+TT堆+3GB+RS堆+其他服务堆。所以它说总ram将是7GB(datanode守护进程)+7GB(tasktracker守护进程)+9GB(子JVM)=25GB+2GB(留给操作系统使用)=27GB。但我只有16GB内存。
mapred.tasktracker.reduce.tasks.maximum = 3
mapred.tasktracker.map.tasks.maximum = 6 and 
mapred.child.java.opts -Xmx1024m