Hbase学习笔记(四)——存储的三个机制(Flush、Compact、Split)

本文详细介绍了Hbase的三个关键存储机制:Flush、Compact和Split。Flush是在MemStore达到128MB或所有Memstore内存使用率达到40%时将数据异步写入HDFS。Compact通过合并小的Storefile以清理过期数据并减少文件数量,分为Minor和Major两种类型。Split则在region的Storefile大小达到10GB时进行,将region分裂为两个新的region。对于这些操作,建议在实际工作中适当调整阈值或手动执行以避免对业务造成影响。

Hbase——存储的三个机制

一、Flush

当MemStore中的数据量达到阈值,就将数据Flush到HDFS中,以Storefile形式存储。

  • 触发条件
  1. 当某个store中的memstore的存储达到 128M

    hbase.hregion.memstore.flush.size = 134217728

  2. 当整个region所使用的Memstore的内存大小达到阈值

    hbase.regionserver.global.memstore.upperLimit = 0.4
    这个参数的作用是当单个HRegion内所有的Memstore大小总和超过指定值时,flush该HRegion的所有memstore。RegionServer的flush是通过将请求添加一个队列,模拟生产消费模式来异步处理的。那这里就有一个问题,当队列来不及消费,产生大量积压请求时,可能会导致内存陡增,最坏的情况是触发OOM。

    hbase.regionserver.global.memstore.lowerLimit = 0.38
    当MemStore使用内存总量达到hbase.regionserver.global.memstore.lowerLimit指定值时,将会有多个MemStores flush到文件中,MemStore flush 顺序是按照大小降序执行的,直到刷新到MemStore使用内存略小于lowerLimit

  • Tips:在工作中需要关闭自动flush,如果自动触发会影响正在运行的其他业务

    解决:写脚本,手动flush
    1.将命令写入文件,一行一个,最后一个命令一定要是exit
    2.使用bin/hbase shell file_path

二、Compact

http://archive.cloudera.com/cdh5/cdh/5/hbase-1.2.0-cdh5.14.0/book.html#compaction

把小的storeFile文件合并成大的Storefile文件。
清理过期的数据,包括删除的数据
将数据的版本号保存为3个

  • minor Compact:将最早最小5个文件进行合并,生成一个较大的文件
  • major Compact:将整个store中所有的storefile进行合并,合并过程中删除被标记为删除的数据
  • 触发条件
    • major:hbase.hregion.majorcompaction= 7 天
  • Tips:关闭自动major compact,将该属性的值设置为0,手动进行合并(major_compact)。

三、Split

当某个region中总的Storefile大小达到阈值,就会触发,等分为两个新的region

  • 触发条件

    hbase.hregion.max.filesize = 10GB

  • Tips:不能让它自动切分,将该值设大一点,手动进行分割。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值