美文网首页我爱编程
HBase删除过期数据,释放空间

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

作者: 杨小邪yxr | 来源:发表于2018-05-07 15:30 被阅读865次

网上很多人说给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压缩

相关文章

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

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

  • Hbase 查询语句

    进入HBase数据库 HBase帮助命令: 命名空间 列出所有命名空间 新建命名空间 删除命名空间 该命名空间必须...

  • redis过期数据删除策略

    过期数据删除策略  redis的过期数据删除策略使用了惰性删除和定期删除两种策略: 惰性删除发生在redis处理读...

  • centos lsof -n / |grep deleted查看

    lsof 命令用法:查看已删除空间却没有释放的进程 查看已经删除的文件,空间有没有释放,没有的话kill掉pid ...

  • Linux- kafka持久化文件太大怎么办?

    前言 Kafka会数据写到硬盘上。磁盘空间有限,kafka有提供清理过期数据的策略。 Kafka删除数据有两种方式...

  • 【疑难杂症】rm删除后df磁盘空间不释放

    问题: rm 删除文件后,df -h 磁盘空间不释放 原因: 一般说来不会出现删除文件后空间不释放的情况,但是也存...

  • hbase常用语句

    1.查看表空间:list_namespace 2.hbase的crt中的退格键,如何删除:按←键到你所要删除字母的...

  • MySQL delete、drop、truncate的区别

    区别 (1)truncate 和 delete只删除数据,不删除表结构 ,drop删除表结构,并且释放所占的空间。...

  • Linux 删除空间不释放空间

    服务器空间告警不足, 定位到日志位置, 对日志进行了rm -f log.name操作,发现删除后空间不释放 然后使...

  • MySql数据库的一些操作

    一、删除数据后磁盘空间的释放总结 1、drop table table_name 立刻释放磁盘空间 ,不管是 In...

网友评论

    本文标题:HBase删除过期数据,释放空间

    本文链接:https://www.haomeiwen.com/subject/netvrftx.html