背景
HBase
在將數據落盤到HDFS
上之後,爲了解決小文件並提高數據訪問效率,定義了兩種方式來合併HFile
文件。
1. Minor Compaction
控制Minor Compaction
的幾個參數及說明:
參數名 | 默認值 | 描述信息 |
---|---|---|
hbase.hstore.compaction.min |
3 |
表示至少要有三個文件滿足minor 合併要求時纔會啓動minor 合併 |
hbase.hstore.compaction.mix |
10 |
表示一次minor 合併最多選擇10 個store file 進行合併 |
hbase.hstore.compaction.min.size |
小於該值的store file 一定會被選入到minor compaction 中 |
|
hbase.hstore.compaction.mix.size |
大於該值的store file 一定不會被選入到minor compaction 中 |
|
hbase.hstore.compaction.ratio |
1.2 |
將store file 按落盤時間排序,minor compaction 總是從older store file 開始選擇,如果該文件的size 小於後面hbase.hstore.compaction.max 個store file 文件總和乘以hbase.hstore.compaction.ratio 的值,那麼該store file 將加入到minor store 中,同時要滿足hbase.hstore.compaction.mix 規定的條件纔會啓動minor compaction . |
2. Major Compaction
觸發Major Compaction
的三種方法:
-
在命令行中使用命令
major_compact
-
使用
API
majorCompact()
-
Region Server
自動運行
如果採用自動運行,則控制Major Compaction
的幾個參數及說明如下:
參數名 | 默認值 | 描述信息 |
---|---|---|
hbase.hregion.majorcompaction |
24 |
當啓動region server 自動運行major compaction 時的運行週期 |
hbase.hregion.majorcompaction.jetter |
0.2 |
爲防止region server 在同一時間運行major compaction ,運行週期浮動錯開同時運行情況. |
24-24*0.2=19.2
24+0.2*24=28.8
所以
Major Compaction
19.2~28.8
小時運行一次