hadoop无法分配内存java.io.IOException:error = 12 [英] hadoop cannot allocate memory java.io.IOException: error=12

查看:1180
本文介绍了hadoop无法分配内存java.io.IOException:error = 12的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在hadoop greenplum上遇到以下错误:

  java.lang.Throwable:Child Error 
at org .apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271)
导致:java.io.IOException:无法运行程序ln:java.io.IOException:error = 12,无法分配内存
at java.lang.ProcessBuilder.start(ProcessBuilder.java:488)
at java.lang.Runtime.exec(Runtime.java:610)
at java.lang.Runtime.exec (Runtime.java:448)
在java.lang.Runtime.exec(Runtime.java:386)
at org.apache.hadoop.fs.FileUtil.symLink(FileUtil.java:567)
at org.apache.hadoop.mapred.TaskLog.createTaskAttemptLogDir(TaskLog.java:109)
at org.apache.hadoop.mapred.DefaultTaskController.createLogDir(DefaultTaskController.java:71)
at org.apache.hadoop.mapred.TaskRunner.prepareLogFiles(TaskRunner.java:316)
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:228)
引起:java。 io.IOException:java.io.IOExce ption:error = 12,无法在java.lang.UNIXProcess处分配内存
。< init>(UNIXProcess.java:164)$ b $ at java.lang.ProcessImpl.start(ProcessImpl.java:81)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:470)
... 8 more

服务器有7G RAM和1G交换。

堆大小为1024m,mapred.child.opts设置为512m。



有什么想法?

解决方案

将tasktracker内存减少到256M,并限制任务路径到每个节点1个,任何更高的值都会导致子错误,并且需要更多时间才能运行mapreduce作业。


i am getting the following error on hadoop greenplum

java.lang.Throwable: Child Error
    at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271)
Caused by: java.io.IOException: Cannot run program "ln": java.io.IOException: error=12, Cannot allocate memory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:488)
    at java.lang.Runtime.exec(Runtime.java:610)
    at java.lang.Runtime.exec(Runtime.java:448)
    at java.lang.Runtime.exec(Runtime.java:386)
    at org.apache.hadoop.fs.FileUtil.symLink(FileUtil.java:567)
    at org.apache.hadoop.mapred.TaskLog.createTaskAttemptLogDir(TaskLog.java:109)
    at org.apache.hadoop.mapred.DefaultTaskController.createLogDir(DefaultTaskController.java:71)
    at org.apache.hadoop.mapred.TaskRunner.prepareLogFiles(TaskRunner.java:316)
    at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:228)
Caused by: java.io.IOException: java.io.IOException: error=12, Cannot allocate memory
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:164)
    at java.lang.ProcessImpl.start(ProcessImpl.java:81)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:470)
    ... 8 more

the server has 7G ram and 1G swap.

heap size is 1024m and mapred.child.opts is set to 512m.

any ideas?

解决方案

reduced tasktracker memory to 256M and limited the number of tasktrackers to 1 per node, anything higher causes child errors and takes more time for mapreduce job to run.

这篇关于hadoop无法分配内存java.io.IOException:error = 12的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆