暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

大数据基础2.11:HBase的内存溢写、合并

Coder陈 2023-03-11
306

HBase的内存溢写、合并


如图,经过从Memstore向HDFS刷新成为HFile多次后,在列族的HDFS文件夹内,就可能出现多个HFile文件。

由于HFile都是有序的,它们之间的Rowkey范围是可能重叠的(没有办法锁定某一个HFile)。

这种场景下,虽然不是太影响太多性能,但是依旧是会影响不少的查询时间的。

解决方式:让多个HFile合并成一个HFile即可。

HBase支持2种合并机制

  • minor 合并(小合并)

  • major 合并(大合并)

补充:HBase的数据删除

HBase的数据不是物理删除,当你删除一条数据的时候只是这一条数据被HBase 标记为删除了 (当它不存在,实际上还在)当你查询的时候,这条数据不会被查询出来但是它的物理实体,已经在HDFS存储着。HBase的多版本也是,比如设置了5个版本,你写入了6个版本最早的版本就无效了。这个无效版本依旧是被标记清理了,但是物理实体还在。

minor 合并

HBase的一种轻量化合并机制,它默认当HFile数量在3~10个的时候,会触发它的合并

特点:

  • 将选择的HFile合并为1个

  • 合并:全部数据读出来,做排序,写出一个排好序的HFile

  • 删除过期的TTL数据TTL:Time To Live(是时间离开了)数据的有效时间,HBase的数据可以设置TTL,如果数据超过TTL允许的时间就会在minor小合并的时候,被清理。

  • 不会清除已经被标记删除的数据,和过期的多版本数据

执行条件:

  1. HFile的数量最少3个(可以改配置)hbase.hstore.compaction.min

  2. 默认在1分钟会检测1次


常见参数:

hbase-site.xml

了解即可。

hbase.hstore.compaction.min: 执行小合并,的最小文件限制

hbase.hstore.compaction.max:执行小合并的最大文件限制

hbase.hstore.compaction.min.size 执行小合并的最小被执行的HFile的累计大小

hbase.hstore.compaction.max.size 执行小合并的HFile的最大大小

hbase.hstore.compaction.ratio :执行小合并后,新的数据文件的增长率,浮点数,建议在1.4左右
如果设置为1.4,执行小合并后,产生的新的HFile在1.4倍率左右
如果为了确保```写入性能```,这个数字也可以设置为0.25
0.25表示合并后生成4个文件

hbase.regionserver.compaction.check.period HBase小合并的默认检查时间,单位是毫秒
文章转载自Coder陈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论