天天看點

OpentTsdb官方文檔中文版----存儲HBase Schema

  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]<metric_uid><timestamp><tagk1><tagv1>[…<tagkN><tagvN>]。預設情況下,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           
00000150E22700000001000001
'---------''-----------''---------''--------'
metric    time    tagk  tagv           
00000150E22700000001000001000002000004
'---------''-----------''---------''--------''---------''---------'
metric    time    tagk  tagv   tagk  tagv           
{"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