背景
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
小时运行一次