HBase删除过期数据,释放空间

网上很多人说给HBASE中的表设置TTL以删除过期数据,但实际操作后发现硬盘可用大小根本没有变动。

查资料发现,原因如下:

当一个明确的delete发生时,实际上,数据并没有被删除,只是增加了一个删除标记,在查询时,删除标记阻止记录返回。然后在major compaction的时候,实际的数据才会被删除,删除标记也会从StoreFile删除。如果数据由于TTL被删除,没有删除标记被创建,在压缩时,过期的数据会被过滤,不会被写回到压缩后的StoreFile文件中。

所以,完整的操作应该是这样的(使用的CDH):

1、进入hbase shell,查看具体表desc 'tablename'
2、停用表disable 'tablename'
3、更改表的TTL(time to live)值(一个int值,单位是秒)alter 'tablename',{NAME=>'columnName', TTL => '604800'},这就表示这个表的数据只保存七天
4、enable 'tablename'重新启用表

此时,如果查看df -lh,你会发现数据还没有被删除,因为空间还没有释放,但是在hbase shell之中你已经查询不到这些数据了。

所以最后需要进入到Cloud Manager,点击HBase的“配置”菜单栏


hbase 配置.png

搜索major


hbase major compaction.png

如图,默认最大化压缩七天一次,请根据自己服务器的情况缩短这个值,值越小,删除数据越快,但服务器读写压力也会变大,我自己设成了1天一次。
设置完成后重启服务器,硬盘空间成功释放
before.png

after.png

参考资料: HBase – Region压缩

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 最近在逐步跟进Hbase的相关工作,由于之前对Hbase并不怎么了解,因此系统地学习了下Hbase,为了加深对Hb...
    飞鸿无痕阅读 50,490评论 19 272
  • HBase存储架构图 HBase Master 为Region server分配region 负责Region s...
    kimibob阅读 10,952评论 0 52
  • Hbase架构与原理 HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang所撰写的Goo...
    全能程序猿阅读 86,370评论 2 37
  • 简介 [HBase]——Hadoop Database的简称,Google BigTable的另一种开源实现方式,...
    高广超阅读 7,089评论 1 27
  • 比特科技: 存储、数据库、大数据技术 » HBase原理和设计 http://www.bitstech.net/...
    葡萄喃喃呓语阅读 4,010评论 0 11

友情链接更多精彩内容