1. 程式人生 > >HBase Major Compaction 原理精講與引數設定建議剖析-OLAP商業環境實戰

HBase Major Compaction 原理精講與引數設定建議剖析-OLAP商業環境實戰

本套技術部落格是作者(秦凱新)平時工作的總結和昇華,通過從真實商業環境抽取案例進行總結和分享,並給出商業應用的調優建議和叢集環境容量規劃等內容,請持續關注本套部落格。版權宣告:禁止轉載,歡迎學習。QQ郵箱地址:[email protected],如有任何學術交流,可隨時聯絡。

網上的Hbase調優資料參差不齊,實在是不忍卒讀,有些都是拼湊且版本過時的東西,我這裡決定綜合所有優質資源進行整合,寫一份最全,最有深度,不過時的技術部落格。辛苦成文,各自珍惜,謝謝!版權宣告:禁止轉載,歡迎學習,侵權必究!

1 Major Compaction 的核心作用

  • Major Compaction 的目的就是增加讀效能,為什麼呢?Major Compaction 除了合併檔案,真的的角色就是從磁碟上把使用者的資料(帶墓碑標記的資料)刪除掉。
  • HBase是建立在HDFS這種只有增加刪除而沒有修改的檔案系統,所以只有在Major Commpaction的時候才能真正實現刪除操作。
  • 那麼在沒有Major Compaction之前,使用者查詢時,怎麼判斷刪除呢?其實使用者增加一條資料就在HFile上增加一條KeyValue,型別就是PUT。當用戶刪除一條資料還是在HFile上增加一條KeyValue,型別是DELETE,這就是墓碑標記。墓碑標記並沒有什麼神祕的地方,只不過是value沒有值,而型別是DELETE。因此在查詢的時候其實就是把所有的HFile都遍歷一遍,一旦發現墓碑標記的就不會把資料返回給使用者,這樣使用者在SCAN操作這條資料時就被認為已經被刪除。

2 Major Compaction 的引數設定

  • hbase.hregion.majorcompaction:majorcompaction發生的週期,單位是毫秒,預設值是7天。為0表示關閉Major Compaction。
  • hbase.hregion.mahorcompaction.jitter.majorCompaction:週期抖動引數,0-1.0引數範圍,預設是0.5

3 Major Compaction到底該不該處理

  • 由於Major Compaction會佔用大量的磁碟和網路IO,會嚴重的影響叢集的效能,如果每次Major Compaction 都發生在高峰期,建議關閉自動的Major Compaction。
  • 使用定時任務在業務非高峰期來手動呼叫Major Compaction,如果完全不進行Major Compaction會對叢集非常不利。

4 昇華

  • 如果資料有固定的TTL,並且越新的資料越容易被讀到,那麼DateTieredCompaction一般是比較合適的。
  • 如果資料沒有TTL或者TTL較大,那麼選擇StripCompaction會比預設的策略更穩定。

本套技術部落格是作者(秦凱新)平時工作的總結和昇華,通過從真實商業環境抽取案例進行總結和分享,並給出商業應用的調優建議和叢集環境容量規劃等內容,請持續關注本套部落格。版權宣告:禁止轉載,歡迎學習。QQ郵箱地址:[email protected],如有任何學術交流,可隨時聯絡。

5 總結

請尊重原創,辛苦成文,彼此珍惜,謝謝!

秦凱新 於深圳 201812011107