转载自:https://blog.youkuaiyun.com/hljlzc2007/article/details/10980949
https://blog.youkuaiyun.com/xiaolang85/article/details/76977309
Hbase为了防止小文件(被刷到磁盘的menstore)过多,提高读写数据的效率,hbase需要在必要的时候将这些小的store file合并成相对较大的store file,同时清除过期和删除数据,这个过程就称之为compaction。
在hbase中,主要存在两种类型的compaction:minor compaction和major compaction。
major compaction的功能是将所有的store file合并成一个,触发major compaction的可能条件有:major_compact 命令、majorCompact()API、region server自动运行(相关参数:hbase.hregion.majoucompaction默认为24 小时、hbase.hregion.majorcompaction.jetter默认值为0.2,防止region server 在同一时间进行major compaction)。hbase.hregion.majorcompaction.jetter参数的作用是:对参数hbase.hregion.majoucompaction规定的值起到浮动的作用,假如两个参数都为默认值24和0,2,那么major compact最终使用的数值为:19.2~28.8 这个范围。
minor操作只用来做部分文件的合并操作以及包括minVersion=0并且设置ttl的过期版本清理,不做任何删除数据、多版本数据的清理工作。minor compaction的运行机制要复杂一些,它由一下几个参数共同决定:
hbase.hstore.compaction.min :默认值为 3,表示至少需要三个满足条件的store file时,minor compaction才会启动
hbase.hstore.compaction.max 默认值为10,表示一次minor compaction中最多选取10个store file
hbase.hstore.compaction.min.size 表示文件大小小于该值的store file 一定会加入到minor compaction的store file中
hbase.hstore.compaction.max.size 表示文件大小大于该值的store file 一定会被minor compaction排除
hbase.hstore.compaction.ratio 将store file 按照文件年龄排序(older to younger),minor compaction总是从older store file开始选择,如果该文件的size 小于它后面hbase.hstore.compaction.max 个store file size 之和乘以 该ratio,则该store file 也将加入到minor compaction中。
本文深入探讨HBase中的Compaction机制,解释minorcompaction和majorcompaction的区别及触发条件,详细分析参数如何影响StoreFile合并,提升读写效率。
832

被折叠的 条评论
为什么被折叠?



