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

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

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

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

感谢您的帮助。

最佳答案

为了在一段时间后删除数据,HBase 对表进行了设置,即 TTL - time to live



当您在 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 个月)

关于hadoop - hbase openTSDB 一定时间后自动删除数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25413520/

10-12 17:31
查看更多