DataWorksData Integration支援使用TSDB Writer將資料點寫入到阿里巴巴雲原生多模資料庫Lindorm TSDB資料庫中,本文為您介紹DataWorks的TSDB資料寫入能力。
支援的版本
TSDB Writer目前僅支援Lindorm TSDB全部版本以及HiTSDB 2.4.x及以上版本,其他版本暫不保證相容。
使用限制
TSDB Writer僅支援使用獨享Data Integration資源群組。
TSDB Writer僅支援指令碼模式配置任務。
實現原理
TSDB Writer外掛程式通過TSDB用戶端 hitsdb-client 串連TSDB執行個體,並將資料點通過HTTP API方式寫入。關於寫入介面,詳情請參見TSDB的SDK文檔:SDK參考。
支援的欄位類型
當sourceDbType為TSDB,即源端資料來源為TSDB Reader或者OpenTSDB Reader時,外掛程式會將源端資料按照JSON字串格式直接寫入;當sourceDbType為RDB,即源端資料來源為關係型資料庫,外掛程式會按照關係型資料庫的Record進行解析,以下內容為您介紹,當sourceDbType為RDB時,columnType的配置及與其對應位置的column可寫入的資料類型。
資料模型 | columnType配置類型 | 資料類型 |
資料標籤 | tag | 字串類型。Tag描述資料來源的特徵,通常不隨時間變化 |
資料產生時間 | timestamp | 時間戳記類型。Timestamp代表資料產生的時間點,可以寫入時指定,也可由系統自動產生 |
資料內容 | field_string | 該Field的value是字串類型。Field描述資料來源的量測指標,通常隨著時間不斷變化, |
field_double | 該Field的value是數實值型別。Field描述資料來源的量測指標,通常隨著時間不斷變化, | |
field_boolean | 該Field的value是布爾類型。Field描述資料來源的量測指標,通常隨著時間不斷變化, |
資料同步任務開發
操作流程請參見通過指令碼模式配置離線同步任務。
指令碼模式配置的全量參數和指令碼Demo請參見下文的附錄:TSDB指令碼Demo與參數說明。
附錄:TSDB指令碼Demo與參數說明
附錄:離線任務指令碼配置方式
如果您配置離線任務時使用指令碼模式的方式進行配置,您需要在任務指令碼中按照指令碼的統一格式要求編寫指令碼中的reader參數和writer參數,指令碼模式的統一要求請參見通過指令碼模式配置離線同步任務,以下為您介紹指令碼模式下的資料來源的Reader參數和Writer參數的指導詳情。
TSDB Writer指令碼Demo
RDB到TSDB的預設配置(推薦)
{ "type": "job", "version": "2.0", "steps": [ { "stepType": "stream",//您可將stream外掛程式替換為具體的RDB類型外掛程式json,RDB類型資料庫包括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,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。 "concurrent":1, //作業並發數。 "mbps":"12"//限流,此處1mbps = 1MB/s。 } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }
從支援OpenTSDB 協議的資料庫同步抽取資料到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,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。 "concurrent":1, //作業並發數。 "mbps":"12"//限流,此處1mbps = 1MB/s。 } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }
使用 OpenTSDB(單值)協議寫入TSDB(不推薦):
{ "type": "job", "version": "2.0", "steps": [ { "stepType": "stream",//您可將stream外掛程式替換為具體的RDB類型外掛程式json,RDB類型資料庫包括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,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。 "concurrent":1, //作業並發數。 "mbps":"12"//限流,此處1mbps = 1MB/s。 } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }
說明轉換到的TSDB 表名(metric)由column中field對應的列名決定,對於上述配置一行關係型資料將會寫入三個metric(field_metric_1,field_metric_2,field_metric_3)。
TSDB Writer指令碼參數
資料來源 | 參數 | 描述 | 是否必選 | 預設值 |
公用參數 | sourceDbType | 資料來源的類型。 | 否 | TSDB 說明 目前支援TSDB和RDB兩個取值。其中,TSDB包括OpenTSDB、Prometheus和TimeScale 。RDB包括MySQL、Oracle、PostgreSQL、DRDS等。 |
endpoint | TSDB 的 HTTP 串連訪問地址,請登入產品管理主控台擷取。 | 是,格式為http://IP:Port。 | 無 | |
database | 匯入的TSDB資料庫名。 | 否 | default 說明 TSDB需要提前建立資料庫。 | |
username | TSDB資料庫使用者名稱, TSDB配置了鑒權時需要填寫。 | 否 | 無 | |
batchSize | 每次批量寫入資料的條數。設定過大的batchSize需要更多的任務記憶體。 | 否,資料類型為INT,需要確保大於0。 | 100 | |
資料來源為TSDB | maxRetryTime | 失敗後重試的次數。 | 否,資料類型為INT,需要確保大於1。 | 3 |
ignoreWriteError | 如果設定為true,則忽略寫入錯誤,繼續寫入。如果多次重試後仍寫入失敗,則終止寫入任務。 | 否,資料類型為BOOL。 | false | |
資料來源為RDB | table | 要匯入TSDB的表名(metric)。如果multiField為false則不需要填寫,對應的metric需要寫到column欄位 | 當multiField為true時必選。 | 無 |
multiField | 使用HTTP API多值(多個field)方式寫入TSDB。 說明 如果使用Lindorm TSDB原生SQL能力訪問HTTP API方式寫入的資料,需要在TSDB進行預建表,否則只能使用TSDB HTTP API方式查詢資料,詳情請參見多值資料查詢。 | 必選。 | false 說明 目前TSDB版本使用多值寫入時,此值需要指定為true。 | |
column | 關係型資料庫中表的欄位名。 | 是 | 無 說明 此處的欄位順序,需要和Reader外掛程式中配置的column欄位的順序保持一致。 | |
columnType | 關係型資料庫中表欄位,映射到TSDB中的類型。支援的類型如下所示:
| 是 | 無 說明 此處的欄位順序,需要和Reader外掛程式中配置的column欄位的順序保持一致。 | |
batchSize | 每次批量寫入資料的條數。 | 否,資料類型為INT,需要確保大於0。 | 100 |
效能報告
效能資料特徵
Metric:指定一個Metric為m。
tagkv:前4個tagkv全排列,形成
10*20*100*100=2,000,000
條時間軸,最後IP對應2,000,000條時間軸,從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]區間內的隨機值。
interval:採集周期為10秒,持續攝入3小時,總資料量為
3*60*60/10*2,000,000=2,160,000,000
個資料點。
效能測試結果
通道數
Data Integration速度(Rec/s)
Data Integration流量(MB/s)
1
129,753
15.45
2
284,953
33.70
3
385,868
45.71