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

Hadoop hbase openTSDB在特定时间后自动删除数据,hadoop,hbase,opentsdb,Hadoop,Hbase,Opentsdb,我使用openTSDB以hbase作为存储系统来存储时间序列数据 我想知道是否有办法在一段时间后降低数据的分辨率 我所说的降低数据分辨率的意思是,比如说,最初,我们有数据以1/秒的时间分辨率进入。大约6个月后,以相同的分辨率存储数据是没有意义的。我想将分辨率降低到1/min,即在该分钟内删除59个其他数据点 hbase或openTSDB上是否有这样的包 谢谢您的帮助。在OpenTSDB中没有自动工具可以做到这一点。也许可以使用其HTTP API编写一个,但您必须检索下采样数据,要求它从该间隔中删

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

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

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

hbase或openTSDB上是否有这样的包


谢谢您的帮助。

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


现在,这可能永远不会在OpenTSDB中实现,因为它的一个关键特性是永远以全分辨率存储数据。如果您真的需要此功能,也许另一个TSD(如)更适合您的要求?

用于在HBase为表设置了一定时间后删除数据,即TTL-

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


当您在HBase上使用OpenTSDB时,它变得非常简单-因为它创建了4个表
tsdb
tsdb meta
tsdb uid
tsdb树
,其中
tsdb
是OpenTSDB放置整个数据的单个巨大表。所以要设置删除时间,我们只需要更改
tsdb
表的conf

根据上述文件摘录,
TTL
可设置为
列族
-
tsdb
有一个cf,即
t
,这是为了满足最低要求,即HBase要求表至少有一个列族

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

hbase> describe 'tsdb'

Table tsdb is ENABLED
tsdb, {NAME => 't', VERSIONS => 1, COMPRESSION => 'NONE', TTL => 'FOREVER'}
使用HBase外壳-设置
TTL

hbase> alter ‘tsdb′, NAME => ‘t′, TTL => 8640000
8640000
秒数等于100天(约3个月)