hbase openTSDB在一定时间后自动删除数据

时间:2014-08-20 20:06:32

标签: hadoop hbase opentsdb

我使用openTSDB存储时间序列数据,hbase作为存储系统。

我想知道是否有办法在一定时间后降低数据的分辨率?

通过降低数据的分辨率,我的意思是,最初我们的数据以1 /秒的时间分辨率进入。大约6个月后,以相同的分辨率存储数据是没有意义的。我想将分辨率降低到1 / min,即删除那一分钟内的59个其他数据点。

hbase或openTSDB上是否有包可以执行此操作?

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

在一段时间后删除数据HBase已设置表格,即 TTL - time to live

  

ColumnFamilies可以设置TTL长度(以秒为单位),HBase将设置   达到到期时间后自动删除行。这个   适用于行的所有版本 - 即使是当前版本。 TTL时间   在行的HBase中编码,以UTC格式指定。

当您在HBase之上使用OpenTSDB时,它非常简单 - 因为它在其中创建了4个表tsdbtsdb-metatsdb-uidtsdb-tree tsdb是OpenTSDB放置整个数据的单个巨大表。因此,要设置删除时间,我们只需要更改tsdb表的conf。

根据文档摘录(上文)TTL可以为column family设置 - tsdb有一个cf t,这是为了实现裸露最小值,即HBase要求表至少包含一个列族。

您可以通过shell检查TTL的当前值:

hbase> describe 'tsdb'

Table tsdb is ENABLED
tsdb, {NAME => 't', VERSIONS => 1, COMPRESSION => 'NONE', TTL => 'FOREVER'}

使用HBase shell - 设置TTL

hbase> alter ‘tsdb′, NAME => ‘t′, TTL => 8640000

8640000秒数等于100天(约3个月)

答案 1 :(得分:1)

在OpenTSDB中没有自动化工具可以做到这一点。可以使用其HTTP API编写一个,但是您必须检索下采样数据,要求它从该间隔中删除所有点,然后再次插入下采样数据。

现在,这可能永远不会在OpenTSDB中实现,因为它的一个关键特性是永远存储具有全分辨率的数据。如果你真的需要这个功能,可能另一个TSD,如Graphite更符合你的要求吗?