2015-05-11 53 views
-1

我試着在大約20GB的數據上運行mapreduce作業,並且在減少混洗階段出現錯誤。它說因爲內存堆空間。然後,我讀了很多源代碼,我必須減少mapred-site.xml上mapreduce.reduce.shuffle.input.buffer.percent屬性的默認值0,7。所以,我把它降低到0.2。如何爲hadoop mapreduce配置java內存堆空間?

我想問一下,該屬性是否會影響我的mapreduce作業的時間性能。那麼,我該如何正確配置才能使我的mapreduce作業永遠不會出錯?

回答

0

mapreduce.reduce.shuffle.input.buffer.percent 0.70在混洗期間從最大堆大小分配到存儲映射輸出的內存百分比。 由此看來,如果將其降至任意值,則可能會降低混洗階段的性能。 他們本來一定的推理和測試背後的默認值 您可以點擊這裏等相關性能 http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

什麼是你的映射器輸出的大約數據,如果這是巨大的,那麼你可能需要增加的數量映射器 同樣,如果減少器的數量很少,堆棧空間錯誤可能會在減少階段發生。

你可能要檢查你的工作櫃檯,增加映射器/減速器數量 你也可以嘗試通過設置屬性mapreduce.reduce.memory.mbmapreduce.map增加映射器/減速器內存 .memory.mb

+0

非常感謝您的回答,我想再問一次,所以當我們在內存配置上出錯時,hadoop mapreduce可以讓任務失敗。那麼,我們可以說,這個問題取決於記錄的數量,那麼,hadoop如何處理這個問題或將失敗風險降到最低? Thanks2 –

+0

理想的洗牌不應該有這個問題。這是什麼大數據,事情不會適合內存有一個錯誤https://issues.apache.org/jira/browse/MAPREDUCE-1182。你在舊版本?如果減少任務的內存不足,那麼它是一個程序員的錯誤(減速器數量太低或自定義分區不好) – bl3e

+0

通過我使用hadoop 2.6.0的方式,我設置reduce task的數量與slave的數量相同節點,你覺得怎麼樣? –