背景
DataX相关使用介绍请参阅 DataX 的 README 文档。
下面将首先介绍 DataX 工具本身,以及本次迁移工作涉及到的两个插件(OpenTSDB Reader 和 TSDB Writer)。
DataX
DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具 / 平台,实现包括 MySQL、Oracle、SqlServer、PostgreSQL、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。
OpenTSDB Reader
OpenTSDB Reader 是 DataX 的一个插件,实现了从 OpenTSDB 读取数据。
TSDB Writer
TSDB Writer 是 DataX 的一个插件,实现了将数据点写入到Lindorm时序引擎中。
Quick Start
点击 链接 进行下载。
这里,我们先以最简单的 Stream Reader 到 Stream Writer 为例。因为这两个插件不依赖任何的外部环境,特别适合用来测试流程是否能走通。简单介绍下这两个插件,其中 Stream Reader 会随机地产生字符串,而 Stream Writer 则会将接受到的字符串输出到控制台,以此模拟一个最简单的数据迁移过程。
- 工具部署
将下载后的安装包,解压至某个目录(作为 DATAX_HOME),即可运行迁移任务:
$ cd ${DATAX_HOME} $ python bin/datax.py job/job.json
- 检查任务是否成功
下面是任务结束后的汇总信息,看到如下内容,即可表示迁移任务已成功完成:
任务启动时刻 : 2019-04-26 11:18:07 任务结束时刻 : 2019-04-26 11:18:17 任务总计耗时 : 10s 任务平均流量 : 253.91KB/s 记录写入速度 : 10000rec/s 读出记录总数 : 100000 读写失败总数 : 0
录制的命令行:数据迁移 Quick Start
通过上述 Stream Reader 到 Stream Writer 的迁移任务,我们就可以确保整个 DataX 流程是没有问题的。下面就可以真正开始 OpenTSDB Reader 到 TSDB Writer 迁移任务了。
- 配置迁移任务
配置一个从 OpenTSDB 数据库同步抽取数据到 时序引擎 的任务,命名为
opentsdb2tsdb.json
,完整的配置信息如下(针对各个配置参数的详细说明,请看下一章节"参数说明"):{ "job": { "content": [ { "reader": { "name": "opentsdbreader", "parameter": { "endpoint": "http://192.168.1.100:4242", "column": [ "m" ], "startTime": "2019-01-01 00:00:00", "endTime": "2019-01-01 03:00:00" } }, "writer": { "name": "tsdbhttpwriter", "parameter": { "endpoint": "http://192.168.1.101:8242" } } } ], "setting": { "speed": { "channel": 1 } } } }
- 启动 OpenTSDB 2 时序引擎 迁移任务
$ cd ${DATAX_HOME}/.. $ ls datax/ datax.tar.gz opentsdb2tsdb.json $ python datax/bin/datax.py opentsdb2tsdb.json
- 检查任务是否成功
下面是任务结束后的汇总信息,看到如下内容,即可表示迁移任务已成功完成:
任务启动时刻 : 2019-04-26 11:47:06 任务结束时刻 : 2019-04-26 11:47:16 任务总计耗时 : 10s 任务平均流量 : 98.92KB/s 记录写入速度 : 868rec/s 读出记录总数 : 8685 读写失败总数 : 0
录制的命令行:从 OpenTSDB 到 时序引擎 数据迁移
参数说明
接下来,我们来看下各个配置项的含义:
名称 | 类型 | 是否必需 | 描述 | 默认值 | 举例 |
---|---|---|---|---|---|
endpoint | String | 是 | OpenTSDB 的 HTTP 连接地址 | 无 | http://127.0.0.1:4242 |
column | Array | 是 | 数据迁移任务需要迁移的 Metric 列表 | [] |
["m"] |
beginDateTime | String | 是 | 和 endDateTime 配合使用,用于指定哪个时间段内的数据点,需要被迁移 | 无 | 2019-05-13 15:00:00 |
endDateTime | String | 是 | 和 beginDateTime 配合使用,用于指定哪个时间段内的数据点,需要被迁移 | 无 | 2019-05-13 17:00:00 |
名称 | 类型 | 是否必需 | 描述 | 默认值 | 举例 |
---|---|---|---|---|---|
endpoint | String | 是 | 时序引擎 的 HTTP 连接地址 | 无 | http://127.0.0.1:8242 |
batchSize | Integer | 否 | 每次批量数据的条数,需要保证大于 0 | 100 | 100 |
maxRetryTime | Integer | 否 | 失败后重试的次数,需要保证大于 1 | 3 | 3 |
ignoreWriteError | Boolean | 否 | 多次重试后,如果该参数设置为 true,则忽略错误,继续写入;否则,则会终止写入任务 | false | false |
注意事项
因为 TSDB Writer 写入数据的方式是调用 HTTP 接口(/api/put
)来完成的,所以需要确保迁移任务的进程能正常访问到 时序引擎 暴露出来的 HTTP 接口的。否则,会报错 Connect Exception 异常。
因为 OpenTSDB Reader 读取数据是通过直连底层存储 HBase 的,所以需要确保迁移任务的进程能正常连接到 HBase 集群。否则,会报错 Connect Exception 异常。
指定起止时间会自动忽略分钟和秒,转为整点时刻,例如 2019-4-18
的 [3:35, 4:55)
会被转为 [3:00, 4:00)
。
FAQ
Q:是否支持调整迁移进程的 JVM 内存大小?
A:支持的。以"从 OpenTSDB 到 时序引擎 的数据迁移任务"为例,启动命令如下:
python datax/bin/datax.py opentsdb2tsdb.json -j "-Xms4096m -Xmx4096m"
Q:如何给 时序引擎 设置网络白名单?
A:参考《Lindorm时序引擎 版 > 快速入门 > 设置网络白名单》。
Q:如何给 HBase 设置网络白名单?
A:参考《云数据库 HBase 版 > 运维指南 > 设置白名单》。
Q:将迁移任务运行在 ECS 上的用户,如何配置 VPC,以及常见问题有哪些?
A:参考《ECS 安全组配置案例》和《VPC 常见问题》。