2015-06-08 34 views
1

我是新配置單元和hadoop,並剛在Hive上創建了一個表(orc fileformat)。我現在試圖在我的配置單元表(位圖索引)上創建索引。每次運行索引構建查詢時,配置單元都會啓動一個地圖縮減作業來索引。在某些時候,我的地圖縮減作業掛起,我的一個節點(在多次重試中隨機不同,因此可能不是節點)失敗。我試圖增加我的mapreduce.child.java.opts到2048mb,但這給我錯誤使用更多的內存比可用,所以我增加了,mapreduce.map.memory.mbmapreduce.reduce.memory.mb到8GB。所有其他配置都保留爲默認值。配置單元索引mapreduce內存錯誤

任何幫助什麼配置我錯過了將非常感激。

只是爲了上下文,我試圖索引一個表格,其中有240億行,大小爲450GB,有3個分區。

回答

2

首先,請確認索引是否適用於小規模數據。假設完成,地圖縮減作業由Hive運行的方式取決於許多問題。 1.查詢類型(使用計數(*)或僅選擇*)。 2.另外,還原器在執行階段分配的內存量(由hive.exec.reducers.bytes.per.reducer屬性控制)。

在您的護理中,它可以是第二點。 給出您運行程序的規模,請相應地計算內存要求。這post有更多的信息。快樂的學習和編碼

+0

看起來,因爲我根本沒有改變那個值,所以當前的'hive.exec.reducers.bytes.per.reducer'應該被設置爲1GB。不應該因爲我的yarn mapreduce配置完全可以管理1GB而給我錯誤嗎?它應該產生更多的減速器。你建議減少分配給每個reducer的字節數嗎?我很抱歉,但我無法真正理解如何計算您提供鏈接的帖子的內存需求。 –

+0

當你說,地圖減少工作掛起,可能還有其他原因。如果這個問題仍然存在,那麼使用調試語句(可以使用log4j或其他語言,並添加調試語句)來識別哪一行代碼有問題。關於內存方面的考慮,我提到了你的24億行執行。一旦程序以小規模運行,規模就會越來越高,並考慮到內存。我知道以前難以分析,請一步步前進。 – Ramzy