2013-02-07 28 views
0

當我爲中型運行EMR實例時,我在其中一個步驟中發現EMR實例已終止。我在AWS中使用了5個實例的中型實例。它的容量是3.75 GB RAM。我將屬性mapred.child.java.opts的堆大小設爲3000 MB。我已經使用JobConf設置了這個參數,如conf.set(「mapred.child.java.opts」,「-Xmx3000m」)。我有三個步驟來運行Amazon EMR計劃。在最後一步,我得到了這個問題,java.lang.Throwable:Child Error。工作失敗的原因是什麼?子節點中映射器所需的最佳堆大小也是多少。Mapred子錯誤:AWS EMR實例已終止

+0

你可以給你完整的堆棧跟蹤嗎?也沒有「最佳堆大小」,它完全取決於你的工作性質,數據量和許多其他參數,你應該提供更多關於你想要做什麼的細節。 –

+0

我的堆棧跟蹤:將它縮短。 java.lang.Throwable中:兒童錯誤 \t在org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271) 所致:java.io.IOException的:具有137 非零狀態任務流程退出\t在org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:258) java.lang.Throwable中:兒童錯誤 \t在org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271) 引起:java.io.IOException:任務進程退出非零狀態爲137. \t at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:258) – prasanna

+0

感謝您的回覆。 – prasanna

回答

0

除非你正在做一些特殊的事情 - 3000M是太高的數字。你可以檢查每臺機器上運行hadoop的地圖任務數量嗎?如果它運行的不止一個 - 它會輕鬆地釋放3.75GB內存(有些內核無論如何都是免費的)。

我們提供hadoop作爲服務(Qubole)。默認情況下(和我以前的演出) - 我們使用1024M作爲默認值。你會希望將io.sort.mb設置爲低於該值(比如400-500MB)。只有當用戶做了一些特別的事情時(比如大型的地圖邊連接) - 是否有理由將其顛覆。如果它不得不增加 - 我們將不得不減少每臺機器上併發地圖任務的最大數量(如果它不止一個)。