从OpenTSDB到TSDB的数据迁移
本文主要介绍如何使用阿里巴巴的开源工具Datax实现从OpenTSDB到TSDB的数据迁移。
背景信息
下面将首先介绍DataX工具本身,以及本次迁移工作涉及到的两个插件(OpenTSDB Reader和TSDB Writer)。DataX相关使用介绍请参阅DataX的README文档。
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的一个插件,实现了将数据点写入到阿里巴巴自研TSDB数据库中。
注意事项
确保与TSDB的网络是连通的。
因为TSDB Writer写入数据的方式是调用HTTP接口(
/api/put
)来完成的,所以需要确保迁移任务的进程能正常访问到TSDB暴露出来的HTTP接口。否则,会报错Connect Exception异常。确保与OpenTSDB底层存储HBase的网络是连通的。
因为OpenTSDB Reader读取数据是通过直连底层存储HBase的,所以需要确保迁移任务的进程能正常连接到HBase集群。否则,会报错Connect Exception异常。
指定起止时间会自动被转为整点时刻。
指定起止时间会自动忽略分钟和秒,转为整点时刻,例如
2019-4-18
的[3:35, 4:55)
会被转为[3:00, 4:00)
。
操作步骤
准备以下环境和工具。
Linux
获取JDK(1.8 以上,推荐 1.8),JDK下载链接。
获取Python(推荐Python 2.6.x),Python下载链接。
OpenTSDB(目前只支持兼容2.3.x,其他版本暂不保证兼容。)
TSDB(目前只支持兼容 2.4.x 及以上版本,其他版本暂不保证兼容。)
下载DataX及插件,DataX及插件下载链接。
利用DataX自带的迁移任务,检查迁移流程能否走通。
我们先以最简单的Stream Reader到Stream Writer为例。因为这两个插件不依赖任何的外部环境,特别适合用来检查流程是否能走通。简单介绍下这两个插件,其中Stream Reader会随机地产生字符串,而Stream Writer则会将接受到的字符串输出到控制台,以此模拟一个最简单的数据迁移过程。
工具部署。
将下载后的安装包,解压至某个目录(作为DATAX_HOME),即可运行迁移任务。如下:
$ cd ${DATAX_HOME} $ python bin/datax.py job/job.json
检查任务是否成功。
下面是任务结束后的汇总信息,看到如下内容,即可表示迁移任务已成功完成:
任务启动时刻:2019-04-2611:18:07 任务结束时刻:2019-04-2611:18:17 任务总计耗时:10s 任务平均流量:253.91KB/s 记录写入速度:10000rec/s 读出记录总数:100000 读写失败总数:0
录制的命令行:数据迁移 Quick Start
配置和启动OpenTSDB到TSDB的迁移任务。
配置迁移任务。
配置一个从OpenTSDB数据库同步抽取数据到TSDB的任务,命名为
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 Reader相关参数
名称
类型
是否必需
描述
默认值
举例
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
TSDB Writer相关参数
名称
类型
是否必需
描述
默认值
举例
endpoint
String
是
TSDB的HTTP连接地址
无
http://127.0.0.1:8242
batchSize
Integer
否
每次批量数据的条数,需要保证大于 0
100
100
maxRetryTime
Integer
否
失败后重试的次数,需要保证大于 1
3
3
ignoreWriteError
Boolean
否
多次重试后,如果该参数设置为 true,则忽略错误,继续写入;否则,则会终止写入任务
false
false
启动OpenTSDB 2 TSDB迁移任务。
$ cd ${DATAX_HOME}/.. $ ls datax/ datax.tar.gz opentsdb2tsdb.json $ python datax/bin/datax.py opentsdb2tsdb.json
检查任务是否成功。
下面是任务结束后的汇总信息,看到如下内容,即可表示迁移任务已成功完成:
任务启动时刻:2019-04-2611:47:06 任务结束时刻:2019-04-2611:47:16 任务总计耗时:10s 任务平均流量:98.92KB/s 记录写入速度:868rec/s 读出记录总数:8685 读写失败总数:0
录制的命令行:从 OpenTSDB 到 TSDB 数据迁移
FAQ
Q:是否支持调整迁移进程的JVM内存大小?
A:支持。以“从OpenTSDB到TSDB的数据迁移任务”为例,启动命令如下:
python datax/bin/datax.py opentsdb2tsdb.json -j "-Xms4096m -Xmx4096m"
Q:如何给TSDB设置网络白名单?
A:请参考设置网络白名单。
Q:如何给HBase设置网络白名单?
A:请参考设置白名单。
Q:将迁移任务运行在ECS上的用户,如何配置VPC,以及常见问题有哪些?
A:请参考ECS 安全组配置案例和VPC 常见问题。