TSDB數(shù)據(jù)源
DataWorks數(shù)據(jù)集成支持使用TSDB Writer將數(shù)據(jù)點(diǎn)寫入到阿里巴巴云原生多模數(shù)據(jù)庫(kù)Lindorm TSDB數(shù)據(jù)庫(kù)中,本文為您介紹DataWorks的TSDB數(shù)據(jù)寫入能力。
支持的版本
TSDB Writer目前僅支持Lindorm TSDB全部版本以及HiTSDB 2.4.x及以上版本,其他版本暫不保證兼容。
使用限制
TSDB Writer支持使用Serverless資源組(推薦)和獨(dú)享數(shù)據(jù)集成資源組。
TSDB Writer僅支持腳本模式配置任務(wù)。
實(shí)現(xiàn)原理
TSDB Writer插件通過TSDB客戶端 hitsdb-client 連接TSDB實(shí)例,并將數(shù)據(jù)點(diǎn)通過HTTP API方式寫入。關(guān)于寫入接口,詳情請(qǐng)參見TSDB的SDK文檔:SDK參考。
支持的字段類型
當(dāng)sourceDbType為TSDB,即源端數(shù)據(jù)源為TSDB Reader或者OpenTSDB Reader時(shí),插件會(huì)將源端數(shù)據(jù)按照J(rèn)SON字符串格式直接寫入;當(dāng)sourceDbType為RDB,即源端數(shù)據(jù)源為關(guān)系型數(shù)據(jù)庫(kù),插件會(huì)按照關(guān)系型數(shù)據(jù)庫(kù)的Record進(jìn)行解析,以下內(nèi)容為您介紹,當(dāng)sourceDbType為RDB時(shí),columnType的配置及與其對(duì)應(yīng)位置的column可寫入的數(shù)據(jù)類型。
關(guān)于TSDB數(shù)據(jù)模型相關(guān)介紹,詳情請(qǐng)參見數(shù)據(jù)模型。
數(shù)據(jù)模型 | columnType配置類型 | 數(shù)據(jù)類型 |
數(shù)據(jù)標(biāo)簽 | tag | 字符串類型。Tag描述數(shù)據(jù)源的特征,通常不隨時(shí)間變化 |
數(shù)據(jù)產(chǎn)生時(shí)間 | timestamp | 時(shí)間戳類型。Timestamp代表數(shù)據(jù)產(chǎn)生的時(shí)間點(diǎn),可以寫入時(shí)指定,也可由系統(tǒng)自動(dòng)生成 |
數(shù)據(jù)內(nèi)容 | field_string | 該Field的value是字符串類型。Field描述數(shù)據(jù)源的量測(cè)指標(biāo),通常隨著時(shí)間不斷變化, |
field_double | 該Field的value是數(shù)值類型。Field描述數(shù)據(jù)源的量測(cè)指標(biāo),通常隨著時(shí)間不斷變化, | |
field_boolean | 該Field的value是布爾類型。Field描述數(shù)據(jù)源的量測(cè)指標(biāo),通常隨著時(shí)間不斷變化, |
數(shù)據(jù)同步任務(wù)開發(fā)
數(shù)據(jù)同步任務(wù)的配置入口和通用配置流程可參見下文的配置指導(dǎo)。
操作流程請(qǐng)參見通過腳本模式配置離線同步任務(wù)。
腳本模式配置的全量參數(shù)和腳本Demo請(qǐng)參見下文的附錄:腳本Demo與參數(shù)說(shuō)明。
附錄:腳本Demo與參數(shù)說(shuō)明
離線任務(wù)腳本配置方式
如果您配置離線任務(wù)時(shí)使用腳本模式的方式進(jìn)行配置,您需要按照統(tǒng)一的腳本格式要求,在任務(wù)腳本中編寫相應(yīng)的參數(shù),詳情請(qǐng)參見通過腳本模式配置離線同步任務(wù),以下為您介紹腳本模式下數(shù)據(jù)源的參數(shù)配置詳情。
Writer腳本Demo
RDB到TSDB的默認(rèn)配置(推薦)
{ "type": "job", "version": "2.0", "steps": [ { "stepType": "stream",//您可將stream插件替換為具體的RDB類型插件json,RDB類型數(shù)據(jù)庫(kù)包括MySQL、Oracle、PostgreSQL、DRDS等。 "parameter": {}, "name": "Reader", "category": "reader" }, { "stepType": "tsdb", "parameter": { "endpoint": "http://localhost:8242", "username": "xxx", "password": "xxx", "sourceDbType": "RDB", "batchSize": 256, "columnType": [ "tag", "tag", "field_string", "field_double", "timestamp", "field_bool" ], "column": [ "tag1", "tag2", "field1", "field2", "timestamp", "field3" ], "multiField": "true", "table": "testmetric", "ignoreWriteError": "false", "database": "default" }, "name": "Writer", "category": "writer" } ], "setting": { "errorLimit": { "record": "0" }, "speed": { "throttle":true,//當(dāng)throttle值為false時(shí),mbps參數(shù)不生效,表示不限流;當(dāng)throttle值為true時(shí),表示限流。 "concurrent":1, //作業(yè)并發(fā)數(shù)。 "mbps":"12"http://限流,此處1mbps = 1MB/s。 } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }
從支持OpenTSDB 協(xié)議的數(shù)據(jù)庫(kù)同步抽取數(shù)據(jù)到TSDB:
{ "type": "job", "version": "2.0", "steps": [ { "stepType": "opentsdb", "parameter": { "endpoint": "http://localhost:4242", "column": [ "m1", "m2", "m3", "m4", "m5", "m6" ], "startTime": "2019-01-01 00:00:00", "endTime": "2019-01-01 03:00:00" }, "name": "Reader", "category": "reader" }, { "stepType": "tsdb", "parameter": { "endpoint": "http://localhost:8242" }, "name": "Writer", "category": "writer" } ], "setting": { "errorLimit": { "record": "0" }, "speed": { "throttle":true,//當(dāng)throttle值為false時(shí),mbps參數(shù)不生效,表示不限流;當(dāng)throttle值為true時(shí),表示限流。 "concurrent":1, //作業(yè)并發(fā)數(shù)。 "mbps":"12"http://限流,此處1mbps = 1MB/s。 } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }
使用 OpenTSDB(單值)協(xié)議寫入TSDB(不推薦):
{ "type": "job", "version": "2.0", "steps": [ { "stepType": "stream",//您可將stream插件替換為具體的RDB類型插件json,RDB類型數(shù)據(jù)庫(kù)包括MySQL、Oracle、PostgreSQL、DRDS等。 "parameter": {}, "name": "Reader", "category": "reader" }, { "stepType": "tsdb", "parameter": { "endpoint": "http://localhost:8242", "username": "xxx", "password": "xxx", "sourceDbType": "RDB", "batchSize": 256, "columnType": [ "tag", "tag", "field_string", "field_double", "timestamp", "field_boolean" ], "column": [ "tag1", "tag2", "field_metric_1", "field_metric_2", "timestamp", "field_metric_3" ], "ignoreWriteError": "false" }, "name": "Writer", "category": "writer" } ], "setting": { "errorLimit": { "record": "0" }, "speed": { "throttle":true,//當(dāng)throttle值為false時(shí),mbps參數(shù)不生效,表示不限流;當(dāng)throttle值為true時(shí),表示限流。 "concurrent":1, //作業(yè)并發(fā)數(shù)。 "mbps":"12"http://限流,此處1mbps = 1MB/s。 } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }
說(shuō)明轉(zhuǎn)換到的TSDB 表名(metric)由column中field對(duì)應(yīng)的列名決定,對(duì)于上述配置一行關(guān)系型數(shù)據(jù)將會(huì)寫入三個(gè)metric(field_metric_1,field_metric_2,field_metric_3)。
Writer腳本參數(shù)
數(shù)據(jù)源 | 參數(shù) | 描述 | 是否必選 | 默認(rèn)值 |
公共參數(shù) | sourceDbType | 數(shù)據(jù)源的類型。 | 否 | TSDB 說(shuō)明 目前支持TSDB和RDB兩個(gè)取值。其中,TSDB包括OpenTSDB、Prometheus和TimeScale 。RDB包括MySQL、Oracle、PostgreSQL、DRDS等。 |
endpoint | TSDB 的 HTTP 連接訪問地址,請(qǐng)登錄產(chǎn)品管理控制臺(tái)獲取。 | 是,格式為http://IP:Port。 | 無(wú) | |
database | 導(dǎo)入的TSDB數(shù)據(jù)庫(kù)名。 | 否 | default 說(shuō)明 TSDB需要提前創(chuàng)建數(shù)據(jù)庫(kù)。 | |
username | TSDB數(shù)據(jù)庫(kù)用戶名, TSDB配置了鑒權(quán)時(shí)需要填寫。 | 否 | 無(wú) | |
batchSize | 每次批量寫入數(shù)據(jù)的條數(shù)。設(shè)置過大的batchSize需要更多的任務(wù)內(nèi)存。 | 否,數(shù)據(jù)類型為INT,需要確保大于0。 | 100 | |
數(shù)據(jù)源為TSDB | maxRetryTime | 失敗后重試的次數(shù)。 | 否,數(shù)據(jù)類型為INT,需要確保大于1。 | 3 |
ignoreWriteError | 如果設(shè)置為true,則忽略寫入錯(cuò)誤,繼續(xù)寫入。如果多次重試后仍寫入失敗,則終止寫入任務(wù)。 | 否,數(shù)據(jù)類型為BOOL。 | false | |
數(shù)據(jù)源為RDB | table | 要導(dǎo)入TSDB的表名(metric)。如果multiField為false則不需要填寫,對(duì)應(yīng)的metric需要寫到column字段 | 當(dāng)multiField為true時(shí)必選。 | 無(wú) |
multiField | 使用HTTP API多值(多個(gè)field)方式寫入TSDB。 說(shuō)明 如果使用Lindorm TSDB原生SQL能力訪問HTTP API方式寫入的數(shù)據(jù),需要在TSDB進(jìn)行預(yù)建表,否則只能使用TSDB HTTP API方式查詢數(shù)據(jù),詳情請(qǐng)參見多值數(shù)據(jù)查詢。 | 必選。 | false 說(shuō)明 目前TSDB版本使用多值寫入時(shí),此值需要指定為true。 | |
column | 關(guān)系型數(shù)據(jù)庫(kù)中表的字段名。 | 是 | 無(wú) 說(shuō)明 此處的字段順序,需要和Reader插件中配置的column字段的順序保持一致。 | |
columnType | 關(guān)系型數(shù)據(jù)庫(kù)中表字段,映射到TSDB中的類型。支持的類型如下所示:
| 是 | 無(wú) 說(shuō)明 此處的字段順序,需要和Reader插件中配置的column字段的順序保持一致。 | |
batchSize | 每次批量寫入數(shù)據(jù)的條數(shù)。 | 否,數(shù)據(jù)類型為INT,需要確保大于0。 | 100 |
性能報(bào)告
性能數(shù)據(jù)特征
Metric:指定一個(gè)Metric為m。
tagkv:前4個(gè)tagkv全排列,形成
10*20*100*100=2,000,000
條時(shí)間線,最后IP對(duì)應(yīng)2,000,000條時(shí)間線,從1開始自增。tag_k
tag_v
zone
z1~z10
cluster
c1~c20
group
g1~100
app
a1~a100
ip
ip1~ip2,000,000
value:度量值為[1, 100]區(qū)間內(nèi)的隨機(jī)值。
interval:采集周期為10秒,持續(xù)攝入3小時(shí),總數(shù)據(jù)量為
3*60*60/10*2,000,000=2,160,000,000
個(gè)數(shù)據(jù)點(diǎn)。
性能測(cè)試結(jié)果
通道數(shù)
數(shù)據(jù)集成速度(Rec/s)
數(shù)據(jù)集成流量(MB/s)
1
129,753
15.45
2
284,953
33.70
3
385,868
45.71