简体   繁体   English

hadoop无法分配内存java.io.IOException:错误= 12

[英]hadoop cannot allocate memory java.io.IOException: error=12

i am getting the following error on hadoop greenplum 我在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. 该服务器具有7G内存和1G交换空间。

heap size is 1024m and mapred.child.opts is set to 512m. 堆大小为1024m,并将mapred.child.opts设置为512m。

any ideas? 有任何想法吗?

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

Whatever memory arrangement you come up with, Hadoop is likely to throw this anyway. 无论您提出哪种内存安排,Hadoop都可能会抛出这种情况。 The problem is that for simple file system tasks like creating symbolic links or checking for available disk space, Hadoop forks a process from the TaskTracker. 问题在于,对于简单的文件系统任务(如创建符号链接或检查可用磁盘空间),Hadoop从TaskTracker派生一个进程。 That process will have as much memory allocated to it as its parent has. 该进程将分配与其父进程一样多的内存。

Typical ways to prevent this problem are to leave as much physical memory unallocated as allocated to the TT, adding some swap to the host for these kind of tasks, or allowing "over commit". 防止此问题的典型方法是保留与分配给TT一样多的未分配物理内存,为此类任务向主机添加一些交换,或允许“过量提交”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何解决“java.io.IOException:error = 12,无法分配内存”调用Runtime #exec()? - How to solve “java.io.IOException: error=12, Cannot allocate memory” calling Runtime#exec()? java.io.IOException:无法使用YARN在Hadoop2中初始化Cluster - java.io.IOException: Cannot initialize Cluster in Hadoop2 with YARN java.io.IOException: 无法运行程序“...”: java.io.IOException: error=2, No such file or directory - java.io.IOException: Cannot run program “…”: java.io.IOException: error=2, No such file or directory java.io.IOException:无法运行程序“ scala”:CreateProcess错误= 2, - java.io.IOException: Cannot run program “scala”: CreateProcess error=2, java.io.IOException:无法运行程序“/usr/bin/sh”:java.io.IOException:error=2,没有那个文件或目录 - java.io.IOException: Cannot run program “/usr/bin/sh”: java.io.IOException: error=2, No such file or directory 无法运行程序java.io.IOException - Cannot run program java.io.IOException java.io.IOException:无法运行程序“ C:\\ AutoIt \\ ModenaAutoIt.exe”:java.io.IOException:error = 2,没有此类文件或目录 - java.io.IOException: Cannot run program “C:\AutoIt\ModenaAutoIt.exe”: java.io.IOException: error=2, No such file or directory java.io.IOException:写入服务器时出错 - java.io.IOException: Error writing to server Process Builder java.io.IOException错误= 2 - Process Builder java.io.IOException error=2 java.io.IOException:error = 11 - java.io.IOException: error=11
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM