189 8069 5689

OpentTsdb官方文档中文版----存储

  OpenTSDB目前支持Apache HBase作为其主要的存储后端。截止版本2.3,OpenTSDB也可以使用Google云上的Bigtable。选择下面的HBase链接以存储架构或Bigtable以查找用于云中的配置和设置。

企业建站必须是能够以充分展现企业形象为主要目的,是企业文化与产品对外扩展宣传的重要窗口,一个合格的网站不仅仅能为公司带来巨大的互联网上的收集和信息发布平台,创新互联建站面向各种领域:成都食品包装袋成都网站设计全网营销推广解决方案、网站设计等建站排名服务。


HBase Schema

Data Table Schema

  OpenTSDB的所有数据点都保存在一个独立的,默认命名为tsdb的海量表中。它利用了HBase排序和region分布优势。所有的值都存储在列族t中。
Row Key– Row key是由一个可选的盐值,metric UID,时间戳,以及tagk/v对的UID组成的字节数组:[salt][…]。默认情况下,UID是3个字节编码。
 自OpenTSDB 2.2版本启用salting特性,第一个字节(或者多个字节)是一个哈希盐值ID以便在多个regions或region servers上更好地分布数据。
 时间戳部分是以4个字节编码以秒为单位的Unix epoch值。每个小时一行,由每行中的时间戳反映。因此每个时间戳将会标准化(归一化)到hour的值,例如:2013-01-01 08:00:00。这是为了避免在单行中填充太多的数据点,因为这会影响region的分布。另外,由于HBase 对Row Key进行排序,同一个指标和时间段的数据,但具有不同标签的数据也将会被组合在一起以便进行高效查询。(不同标签组合在一起,是指同一个Region?)
 没有盐值的示例row key,以16进制表示如下:

00000150E22700000001000001
00000150E22700000001000001000002000004
00000150E22700000001000002
00000150E22700000001000003
00000150E23510000001000001
00000150E23510000001000001000002000004
00000150E23510000001000002
00000150E23510000001000003
00000150E24320000001000001
00000150E24320000001000001000002000004
00000150E24320000001000002
00000150E24320000001000003

  where

00000150E22700000001000001
'---------''-----------''---------''--------'
metric    time    tagk  tagv

  这代表了一个单一的指标,而是3个小时的4个时间序列。请注意一个时间序列由两组标签:

00000150E22700000001000001000002000004
'---------''-----------''---------''--------''---------''---------'
metric    time    tagk  tagv   tagk  tagv

  标签名称(tagk)在存储之前按照字幕顺序排序,所以在rowkey/TSUID中host标签将始终出现在owner之前。
数据点列
 到目前为止,最常见的列数据点。这些是数据发送到TSD进行存储时记录的实际值。
Column Qualifier– qualifier有2个或4个字节组成,这些字节对行的基准时间的偏移以及确定此值是integer或者decimal(十进制)值的标识进行编码。Qualifier对行基准时间的偏移量以及存储的数据的格式和长度进行编码。
 具有2个字节Qualifier的列是以秒为单位的偏移。Qualifier的前12位(bit)代表一个integer,它是row key中时间戳的增量。例如,如果row key归一化为1292148000 ,在1292148123时刻来了一个数据点,则记录的增加将为123。最后4位(bit)是格式标识。
 具有4个字节Qualifier的列是以毫秒为单位的偏移。Qualifier的前4位(bit)将会置为十六进制的1或F。接下来的22位(bit)编码offset为一个unsigned integer。接下来的2位(bit)保留,最后4位(bit)是格式标识。
 任一列类型的最后4位(bit)描述存储的数据。第一位是一个标识,指示该值是整数还是浮点数。值0标识一个整数,1表示一个浮点数。最后3位(bit)表示数据的长度,偏移量1。值000表示1字节值,而010表示2字节值。长度必须反映1,2,4或8中的值。其他任何内容都表示出现错误。
 例如:0100表示列值是一个8字节的有符号整数。1011表示列值是一个4字节浮点值。因此在1292148123 时刻的Qualifier的数据点将具有整数值4294967296 ,将会有0000011110110100 或十六进制07B4的Qualifier。
Column Values– 由Qualifier标识指定的1到8个字节编码。
测试示例:

{"metric":"sys.cpu.system","tags":{"host":"web02","dc":"lax"},"timestamp":1525336162539,"value":4}
查询结果:
RowKey{metricUid='1', metricName='sys.cpu.system', ts=1525334400, datetime='2018-05-03 16:00:00', tags=[TagPair{tagKUid='1', tagK='host', tagVUid='3', tagV='web02'}, TagPair{tagKUid='2', tagK='dc', tagVUid='6', tagV='lax'}]}
family: t   qualifier: f6b93ac0  value: 4
计算:
0xf6b93ac0 = 1111 0110 1011 1001 0011 1010 1100 0000(二进制)
前4bit:1111
22bit: 0110 1011 1001 0011 1010 11 = 1762539(十进制)
最后4bit:0000
因此: 时间戳 = 1525334400*1000 + 1762539 = 1525336162539

本文名称:OpentTsdb官方文档中文版----存储
URL分享:http://cdxtjz.cn/article/jgjhej.html

其他资讯