HBase中的StoreFile什麼時間合併__學習筆記


前言:圖片是HBase架構圖,建議結合架構圖,理解StoreFile 的合併

概述

HBase 根據合併規模將 Compaction 分爲了兩類:MinorCompaction 和 MajorCompaction。

Minor Compaction:會將臨近的若干個較小的 HFile 合併成一個較大的 HFile,但 不會清理過期和刪除的數據。

Major Compaction:會將一個 Store 下的所有的 HFile 合併成一個大 HFile,並且 會清理掉過期和刪除的數據。
另外,一般情況下,Major Compaction時間會持續比較長,整個過程會消耗大量系統資源,對上層業務有比較大的影響。因此線上業務都會將關閉自動觸發Major Compaction功能,改爲手動在業務低峯期觸發。默認Major Compaction的合併週期是7天

一、合併storefile的原因

由於memstore每次刷寫都會生成一個新的HFile,且同一個字段的不同版本(timestamp)和不同類型(Put/Delete)有可能會分佈在不同的HFile中,因此查詢時需要遍歷所有的HFile。爲了減少 HFile 的個數,以及清理掉過期和刪除的數據,會進行 StoreFile Compaction。
Hadoop不擅長處理小文件,文件越大性能越好。

二、什麼時候合併

1、一個列簇中storefile大於等於3個的時候就會自動合併(Major Compaction)
2、7天的時候會自動合併

但是在生產中,建議把自動合併關掉。因爲Major Compaction時間會持續比較長,整個過程會消耗大量系統資源,對上層業務有比較大的影響


3、HBase shell 手動合併某個文件
compact '表名'

參考文章:HBase篇(6)-HFile合併過程詳解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章