私はそこで死ぬことになるいくつかの豚のスクリプトを持っているので、Javaヒープが空き領域を使い果たしているというエラーでジョブのフェーズが短縮されます。今日まで私の唯一の解決策は減速機の数を増やすことでしたが、それはどこでも信頼できるものにはなっていないようです。今は、データの大規模な成長だけかもしれませんが、確信が持てません。リデューサーのヒープメモリ不足
スピルスレッシュホールド設定の変更について考えましたが、設定を思い出すことはできませんが、スピードスレッショルド設定を呼び出すことはできません。この問題を解決するために他にどんなことをすることができますか?
時にはこれが起き始めると、bashがスピル操作であると想定しているメモリを取得できないというエラーが表示されることがあります。これはメモリが不足しているHadoopノードですか?もしそうなら、これらのボックスのヒープサイズを下げるだけで解決策になりますか?
編集1
1)豚は0.8.1
2)のみUDFはちょうどなしのバッグやマップに単一の行を見てevalをUDFです。
3)私は、キーの乱れの原因となるホットスポットがないことに気付きませんでした。私は素数スケールを使ってこの問題を減らしてきました。私は得続けるbashのエラーここ
2012-01-04 09:58:11,179 FATAL org.apache.hadoop.mapred.TaskRunner: attempt_201112070707_75699_r_000054_1 : Map output copy failure : java.lang.OutOfMemoryError: Java heap space at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.shuffleInMemory(ReduceTask.java:1508) at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.getMapOutput(ReduceTask.java:1408) at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.copyOutput(ReduceTask.java:1261) at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.run(ReduceTask.java:1195)
されています:
java.io.IOException: Task: attempt_201112070707_75699_r_000054_0 - The reduce copier failed at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:380) at org.apache.hadoop.mapred.Child.main(Child.java:170) Caused by: java.io.IOException: Cannot run program "bash": java.io.IOException: error=12, Cannot allocate memory at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) at org.apache.hadoop.util.Shell.runCommand(Shell.java:149) at org.apache.hadoop.util.Shell.run(Shell.java:134) at org.apache.hadoop.fs.DF.getAvailable(DF.java:73) at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:329) at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:124) at org.apache.hadoop.mapred.MapOutputFile.getInputFileForWrite(MapOutputFile.java:160) at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$InMemFSMergeThread.doInMemMerge(ReduceTask.java:2537) at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$InMemFSMergeThread.run(ReduceTask.java:2501)
さらなる調査の結果、この問題のいくつかのバリエーションがHadoop 0.20.2で解決されたと言っているいくつかのバグレポートを手助けしていると思われる部分的な作業があることがわかりました。 回避策は、次の行を豚スクリプトに追加するか、それをpig.propertiesファイルに追加することです。デフォルトは0.70または70%です。 "set mapred.job.shuffle.input.buffer.percent 0.50;" – NerdyNick