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

oyt4ldly  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(627)

我使用opentsdb来存储时间序列数据,hbase作为存储系统。
我想知道是否有办法在一段时间后降低数据的分辨率?
我所说的降低数据分辨率的意思是,比如说,最初,我们有数据以1/秒的时间分辨率进入。大约6个月后,以相同的分辨率存储数据是没有意义的。我想将分辨率降低到1/min,即在那一分钟内删除其他59个数据点。
在hbase或opentsdb上有这样的包吗?
谢谢你的帮助。

dxxyhpgq

dxxyhpgq1#

在opentsdb中没有自动工具可以做到这一点。也许可以使用它的httpapi编写一个,但是您必须检索下采样数据,要求它删除该间隔中的所有点,然后再次插入下采样数据。
现在,这可能永远不会在opentsdb中实现,因为它的一个关键特性是永远以完全分辨率存储数据。如果你真的需要这个功能,也许另一个tsd,如石墨会更好地满足你的要求?

2eafrhcq

2eafrhcq2#

对于在特定时间段后删除数据,hbase对表进行了设置,即ttl—生存时间。
columnfamilies可以以秒为单位设置ttl长度,一旦达到过期时间,hbase将自动删除行。这适用于行的所有版本-即使是当前版本。行的hbase中编码的ttl时间以utc为单位指定。
当您在hbase之上使用opentsdb时,它非常简单,因为它创建了4个表 tsdb , tsdb-meta , tsdb-uid , tsdb-tree 其中 tsdb 是一个巨大的表,opentsdb将整个数据放在其中。所以要设置删除时间,我们需要为 tsdb 只有table。
根据上述文件摘录 TTL 可设置为 column family - tsdb 只有一个cf,即。 t ,即满足最低要求,即hbase要求表至少有一个列族。
您可以检查 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个月)

相关问题