DataWorks数据集成支持使用TSDB Writer将数据点写入到阿里巴巴云原生多模数据库Lindorm TSDB数据库中,本文为您介绍DataWorks的TSDB数据写入能力。
支持的版本
TSDB Writer目前仅支持Lindorm TSDB全部版本以及HiTSDB 2.4.x及以上版本,其他版本暂不保证兼容。
使用限制
TSDB Writer支持使用Serverless资源组(推荐)和独享数据集成资源组。
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可写入的数据类型。
关于TSDB数据模型相关介绍,详情请参见数据模型。
数据模型 | columnType配置类型 | 数据类型 |
数据模型 | columnType配置类型 | 数据类型 |
数据标签 | tag | 字符串类型。Tag描述数据源的特征,通常不随时间变化 |
数据产生时间 | timestamp | 时间戳类型。Timestamp代表数据产生的时间点,可以写入时指定,也可由系统自动生成 |
数据内容 | field_string | 该Field的value是字符串类型。Field描述数据源的量测指标,通常随着时间不断变化, |
field_double | 该Field的value是数值类型。Field描述数据源的量测指标,通常随着时间不断变化, | |
field_boolean | 该Field的value是布尔类型。Field描述数据源的量测指标,通常随着时间不断变化, |
数据同步任务开发
数据同步任务的配置入口和通用配置流程可参见下文的配置指导。
操作流程请参见通过脚本模式配置离线同步任务。
脚本模式配置的全量参数和脚本Demo请参见下文的附录:脚本Demo与参数说明。
附录:脚本Demo与参数说明
离线任务脚本配置方式
如果您配置离线任务时使用脚本模式的方式进行配置,您需要按照统一的脚本格式要求,在任务脚本中编写相应的参数,详情请参见通过脚本模式配置离线同步任务,以下为您介绍脚本模式下数据源的参数配置详情。
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)。
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
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
个数据点。
性能测试结果
通道数
数据集成速度(Rec/s)
数据集成流量(MB/s)
通道数
数据集成速度(Rec/s)
数据集成流量(MB/s)
1
129,753
15.45
2
284,953
33.70
3
385,868
45.71
- 本页导读 (1)
- 支持的版本
- 使用限制
- 实现原理
- 支持的字段类型
- 数据同步任务开发
- 附录:脚本Demo与参数说明
- 离线任务脚本配置方式
- Writer脚本Demo
- Writer脚本参数
- 性能报告