Compactions in hbase

在hbase中, compaction指的是將較小的StoreFile,
也就是被刷到硬碟的MenStore, 合併成較大的StoreFile,
以保證保證查詢效率, 這個過程就稱之為compaction.

在hbase中, compaction分成minor compaction以及major compaction.
minor compaction只進行StoreFile檔案的合併, 以及將時間過期的資料移除,
major compaction則會將檔案重新整理, 並且執行刪除的指令,
在此之前, hbase中刪除的操作都只是一個標記, 而未真實執行.

觸發major compaction的可能條件有:
(1) 透過hbase shell所執行major_compact 命令
(2) Java api的majorCompact()指令
(3) RegionServer自動運行
      (相關參數:hbase.hregion.majoucompaction 默認為24小時
                           hbase.hregion.majorcompaction.jetter 預設值為0.2 )
其中, jitter值的設定是為了防止RegionServer在同一時間進行major compaction.

當flush由MemStore的上限觸發時,
我們將可以在下圖中看到MemStore和StoreFile的關聯性.



第一張圖是MemStore的使用量,
當到達上限時(在圖中是100MB,預設值為0.4*heapsize),
MemStore的資料將被寫入StoreFile.

第二張圖顯示StoreFile的數量,
隨著MemStore資料寫入硬碟StoreFile的數量呈階梯狀的成長

當StoreFile數量到達一定值時(在圖三中是3~4個),
將觸發compaction將多個StoreFile合併成一個(在圖三中紅色的部分).


參考文獻:
http://stackoverflow.com/questions/11658328/when-does-hbase-actually-delete-a-row
http://www.ngdata.com/visualizing-hbase-flushes-and-compactions/
http://blog.csdn.net/siyu_828/article/details/8855736
http://blog.csdn.net/azhao_dn/article/details/8867036
http://www.binospace.com/index.php/in-depth-understanding-of-the-hbase-compaction/
http://blog.cloudera.com/blog/2013/12/what-are-hbase-compactions/

留言

熱門文章

LTE筆記: RSRP, RSSI and RSRQ

[WiFi] WiFi 網路的識別: BSS, ESS, SSID, ESSID, BSSID

LTE筆記: 波束成型 (beamforming) 和天線陣列