在运行hadoop程序时经常遇到异常 java.io.IOException: Task process exit with nonzero status of 1。网上很多博文都说是磁盘不够的问题。
其实我很多时候遇到这个问题是因为程序抛出org.apache.hadoop.mapred.Child: Error running child : java.lang.OutOfMemoryError: unable to create new native thread这个问题导致程序失败并删除掉工作区间,最终导致文件无法读写。因此,通常抛出这个问题也有可能是因为内存溢出。
解决方法:
1. 增大hadoop-env.sh 中HADOOP_HEAPSIZE的值
2 .增大 mapred-site.xml 中mapred.child.java.opts的值(默认为200M)
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx2048m</value>
</property>
3. 减小 mapred-site.xml中mapred.tasktracker.map.tasks.maximumde和mapred.tasktracker.reduce.tasks.maximum的值
<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>15</value>
</property>