多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
hbase1.x版本和2.x版本不同,下面分别介绍两种版本的相关控制参数。<br/> **1. hbase 1.x版本的参数** <hr/> <mark>(1)Minor Compaction方式的相关控制参数</mark> | 参数名 | 说明 | | --- | --- | | hbase.hregion.memstore.flush.size | 缓存阈值大小 | | hbase.hstore.compaction.max | 每次compact的HFile的最大数目,默认是10 | | hbase.hstore.compaction.kv.max | compact时批量读取和写入KeyValue数据的数量,默认是10 | <mark>(2)Major Compaction方式的相关控制参数</mark> | 参数名 | 说明 | | --- | --- | | hbase.hregion.majorcompaction | 时间间隔 | <br/> **2. hbase 2.x版本的相关控制参数** <hr/> <mark>(1)Minor Compaction方式的相关控制参数</mark> | 参数名 | 默认值 | 描述 | | --- | --- | --- | | hbase.hstore.compaction.max | 10 | 表示一次 minor compaction 中最多选取 10个 store file | | hbase.hstore.compaction.min | 3 | 表示至少需要三个满足条件的 store file 时,minor compaction 才会启动 | | hbase.hstore.compaction.min.size | | 表示文件大小小于该值的store file 一定会加入到minor compaction 的 store file 中 | | hbase.hstore.compaction.max.size | | 表示文件大小大于该值的StoreFile,一定会被 minor compaction 排除 | | hbase.hstore.compaction.ratio | 1.2 | 将 store file 按照文件年龄排序(older to younger),minor compaction 总是从older store file 开始选择 | 将 StoreFile 按照文件年龄排序,minor compaction 总是从 older store file 开始选择,计算公式: ```[math] 该文件的大小<(所有文件大小总和-该文件大小)*比例因子 ``` 即该文件的 size 小于它后面 hbase.hstore.compaction.max 个 store file size 之和乘以 ratio 的值,那么该 store file 将加入到 minor compaction 中。 如果满足 minor compaction 条件的文件数量大于 hbase.hstore.compaction.min,才会启动minor compaction。 hbase.hstore.compaction.min.size 和 hbase.hstore.compaction.max.size 参数用于控制特殊大小的文件直接判断是否加入 minor compaction。<br/> 如果该文件大小小于最小合并大小(minCompactSize),则连上面那个公式都不需要套用 , 直接进入待合并列表 。 最小合并大小的配置项 hbase.hstore.compaction.min.size 。 如果没设定该配置项 , 则使用hbase.hregion.memstore.flush.size。被挑选的文件必须能通过以上提到的筛选条件,并且组合内含有的文件数必须大于 hbase.hstore.compaction.min,小于hbase.hstore.compaction.max。因为文件太少了没必要合并,还浪费资源;文件太多了太消耗资源,怕机器受不了。<br/> 上面的选择方式,会形成多个满足条件的 StoreFile 组合,然后再比较哪个文件组合包含的文件更多,就合并哪个组合。如果出现平局,就挑选那个文件尺寸总和更小的组合。<br/> <mark>(2)Major Compaction方式的相关控制参数</mark> | 参数名 | 默认值 | 描述 | | --- | --- | --- | | hbase.hregion.majorcompaction | 7天 | majorcompacttion 发生的周期,单位是毫秒 | 注意:虽然有以上机制控制 Major Compaction 的发生时机,但是由于 Major Compaction 时对系统的压力是非常大的,所以建议关闭自动 Major Compaction(hbase.hregion.majorcompaction=0),采用手动触发的方式,定期进行 Major Compaction。 手动 Major Compaction 命令为: ```sql hbase(main):002:0> major_compact Examples: Compact all regions in a table: hbase> major_compact 't1' hbase> major_compact 'ns1:t1' Compact an entire region: hbase> major_compact 'r1' Compact a single column family within a region: hbase> major_compact 'r1', 'c1' Compact a single column family within a table: hbase> major_compact 't1', 'c1' ```