所以我有幾個Pig腳本在那裏繼續死亡,減少了Java堆中空間不足的錯誤。到目前爲止,我唯一的解決方案是增加減速器數量,但這似乎並沒有讓我可靠。現在,其中一部分可能只是我們正在獲得的數據的大幅增長,但不能確定。Reducer's堆內存不足
我想過改變溢出閾值設置,不能記得設置,但不知道他們是否會幫助或減慢它。我可以看看我能做些什麼來解決這個問題?
關於一個側面說明,當這種情況偶爾發生時,我也會得到有關bash無法獲得內存的錯誤,因爲我認爲這是溢出操作。這是否是Hadoop節點內存不足?如果是這樣的話,只能在這些盒子上減小堆大小的解決方案?
編輯1
1)豬0.8.1
2)唯一的UDF是一個eval UDF,僅僅着眼於與無袋或地圖單個行。
3)我沒有注意到有任何熱點壞鑰匙distrobution。我一直在使用素數標度來減少這個問題。
編輯2
這裏是有問題的錯誤:
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)
這裏是bash的錯誤我不斷收到:
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 2012-01-18 16:27:29