2013-09-05 27 views
3

我必須每月在HBase表中存儲有關實體的信息。我想處理迄今爲止使用mapreduce邏輯的實體的所有月份詳細信息。我很困惑是否選擇HBase桌子的高窄或寬扁設計。HBase表格設計 - 高窄窄平坦的方法

使用扁平寬方法,實體Id將保留爲行鍵和月份id作爲列限定符,並且詳細信息爲限定符值。在HBase-mapreduce中,我可以獲取地圖和過程中實體的所有詳細信息。

高窄方法將存儲行鍵作爲實體ID和月份的組合。此外,細節將存儲在一個單獨的列中。在HBase-mapreduce中,我必須獲取詳細信息,以便在縮減器中查找map和aggregate中的所有月份。

哪種方法更好,性能更好?提前致謝。

+0

所以你必須在一個月內存儲一次信息??另外,鋤頭多? – Tariq

+0

信息粒度是每月。可能發生的情況是,一個實體的特定月度信息可以更新頻率更高。要存儲的信息包含500個鍵值。可能有數百萬個這樣的實體。我沒有確切的數字數據。 – InfamousCoconut

回答

3

一些假設:

  • 你有很多的實體,您每月一次要保存其狀態
  • 您從MapReduce工作想要的結果彙總了這些實體,並保存信息基礎上,一個月。例如這些數字的一月2013
  • 每單位每月

你是不是存儲龐大的信息量分別爲(所有實體)我覺得Flat-Wide表方法會產生更好的效果。如果我正確地記得HBase以每列家族爲基礎存儲數據,這就是爲什麼如果我正確地記得HBase存儲數據,在壓實發生的水平..更多信息在Suggestions on performance optimization section)。既然它們在一起,你應該能夠快速獲取任何實體信息,因爲你有rowkey-column族列量詞信息。同樣假設實體標識符是散列的(或者你用一個散列值加前綴),你應該也可以防止monotonically increasing鍵值。

關於運行MapReduce作業。由於此時您的數據均勻分佈在所有區域服務器上,因此您的計算也將分佈。意味着所有機器都可能做同樣數量的工作。但是,您也可以使用Tall-Narrow模型(假設您正確設計模式)。