0

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

サーバーには 7G RAM と 1G スワップがあります。

ヒープ サイズは 1024m で、mapred.child.opts は 512m に設定されています。

何か案は?

4

2 に答える 2

0

どのようなメモリ配置を思いついたとしても、Hadoop はとにかくこれをスローする可能性があります。問題は、シンボリック リンクの作成や使用可能なディスク領域の確認などの単純なファイル システム タスクの場合、Hadoop が TaskTracker からプロセスをフォークすることです。そのプロセスには、その親が持っているのと同じ量のメモリが割り当てられます。

この問題を回避する一般的な方法は、TT に割り当てられているのと同じくらい多くの物理メモリを未割り当てのままにしておくか、これらの種類のタスクのためにホストにスワップを追加するか、「オーバーコミット」を許可することです。

于 2013-10-07T13:17:18.590 に答える