分享

HBase实现记录定期定量删除

howtodown 2014-7-2 20:17:51 发表于 总结型 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 25050
问题导读:
1、如何定期删除数据?

2、如何在数据超过阈值时删除数据?




文中可能涉及到的API:
Hadoop/HDFS:http://hadoop.apache.org/common/docs/current/api/
HBase: http://hbase.apache.org/apidocs/index.html?overview-summary.html
Begin!
HBase如何实现定期定量的删除记录?使用场景分析:我们在HBase中存储的记录可能有一些是增速很快且又不需要永久保存的,比如大量的“系统日志”,也许只需保存最近几个月记录便可。我们的存储空间又很有限,尤其是HDFS这种多副本容灾存储。再加上HBase在存储每一行数据时,分别要为每一列保存一份rowKey,如果一行有10列,光rowKey就要存储10份,开销可想而知。因此定期定量删除的功能也就成了普遍的需求。

一、如何定期删除数据?使用表格级的属性:TTL(Time To Live),设置记录的有效期,当前时间超过记录有效期后该记录将被自动删除。记录的有效期 = TimeStamp + TTL;

二、如何在数据超过阈值时删除数据?比如我们限定某张表最多占用约1T的空间,当数据超过1T时就删除表中最老的一部分数据。
1、在HDFS层面,获取表格占用空间。通过Configuration实例创建FileSystem实例,调用Fs的getContentSummary(Path f)获取表格目录的ContentSummary实例,再调用getLength()便可获得该表格的大小。
2、若表格大小超过阈值,删除时间戳较小的一定量的记录。通过hbase api中scan的setTimeRange方法完成待删除的数据筛选,然后删之~




Author:Pirate Leo
myBlog: http://blog.csdn.net/pirateleo/
myEmail: codeevoship@gmail.com


已有(1)人评论

跳转到指定楼层
tang 发表于 2015-6-10 20:45:33
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条