我使用opentsdb来存储时间序列数据,hbase作为存储系统。我想知道是否有办法在一段时间后降低数据的分辨率?我所说的降低数据分辨率的意思是,比如说,最初,我们有数据以1/秒的时间分辨率进入。大约6个月后,以相同的分辨率存储数据是没有意义的。我想将分辨率降低到1/min,即在那一分钟内删除其他59个数据点。在hbase或opentsdb上有这样的包吗?谢谢你的帮助。
dxxyhpgq1#
在opentsdb中没有自动工具可以做到这一点。也许可以使用它的httpapi编写一个,但是您必须检索下采样数据,要求它删除该间隔中的所有点,然后再次插入下采样数据。现在,这可能永远不会在opentsdb中实现,因为它的一个关键特性是永远以完全分辨率存储数据。如果你真的需要这个功能,也许另一个tsd,如石墨会更好地满足你的要求?
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 ,通过外壳:
tsdb
tsdb-meta
tsdb-uid
tsdb-tree
TTL
column family
t
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个月)
2条答案
按热度按时间dxxyhpgq1#
在opentsdb中没有自动工具可以做到这一点。也许可以使用它的httpapi编写一个,但是您必须检索下采样数据,要求它删除该间隔中的所有点,然后再次插入下采样数据。
现在,这可能永远不会在opentsdb中实现,因为它的一个关键特性是永远以完全分辨率存储数据。如果你真的需要这个功能,也许另一个tsd,如石墨会更好地满足你的要求?
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 shell设置
TTL
: