本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
通过DataX工具,您可以将HBase数据库中的全量数据同步到表格存储(Tablestore)的数据表中。
注意事项
使用DataX工具只支持同步HBase全量数据到表格存储,不支持同步增量数据。
前提条件
已准备带有Linux系统的服务器并完成如下软件的安装。
说明如果当前没有带有Linux系统的服务器,推荐您使用云服务器ECS部署Linux系统后再进行操作。更多信息,请参见通过控制台使用ECS实例(快捷版)。
已完成Java 8(64-bit)开发环境的安装。
已完成Python2或者Python3开发环境的安装。
在访问控制RAM服务侧完成如下操作:
已创建RAM用户并为RAM用户授予管理表格存储权限(AliyunOTSFullAccess)。具体操作,请参见创建RAM用户和为RAM用户授权。
警告阿里云账号AccessKey泄露会威胁您所有资源的安全。建议您使用RAM用户AccessKey进行操作,可以有效降低AccessKey泄露的风险。
已为RAM用户创建AccessKey。具体操作,请参见创建AccessKey。
在表格存储服务侧已完成如下操作:
步骤一:下载DataX
您可以选择下载DataX的源代码进行本地编译或者直接下载编译好的压缩包。
下载DataX的源代码并编译。
通过Git工具执行以下命令下载DataX源代码。
git clone https://github.com/alibaba/DataX.git
进入到下载的源代码目录后,执行以下命令进行Maven打包。
说明此步骤会在本地编译各种数据源的Writer和Reader,花费时间较长,请耐心等待。
mvn -U clean package assembly:assembly -Dmaven.test.skip=true
编译完成后,进入target/datax/datax目录,其中的目录说明请参见下表。
目录
说明
bin
存放可执行的datax.py文件,是整个DataX工具的入口。
plugin
存放支持各种类型数据源的Reader和Writer。
conf
存放core.json文件,该文件中定义了一些缺省参数值,例如channel流控、buffer大小等参数,一般无需修改。
直接下载Data工具包。
步骤二:准备全量导出的JSON文件
DataX提供了HbaseReader插件从HBase中读取数据。在底层实现上,HbaseReader通过HBase的Java客户端连接远程HBase服务,并通过Scan方式读取指定rowkey范围内的数据,然后将读取的数据使用DataX自定义的数据类型拼装为抽象的数据集,并传递给下游Writer处理。
您可以根据HBase版本选择相应的Reader插件导出JSON文件。
DataX仅提供HBase0.94、HBase1.1以及HBase2.0的导出插件,如需导出其他版本的HBase数据,请参考HBase API实现导出工具。
Hbase2.0 XReader:Hbase2.0 XReader插件从Phoenix读取数据。
配置样例
以下示例使用Hbase1.1 XReader配置一个从HBase抽取数据到本地的作业(normal 模式)。详细的配置项说明,请参见Hbase11XReader插件文档。
{
"job": {
"setting": {
"speed": {
"channel": 1
}
},
"content": [
{
"reader": {
"name": "hbase11xreader",
"parameter": {
"hbaseConfig": {
"hbase.zookeeper.quorum": "xxxf"
},
"table": "users",
"encoding": "utf-8",
"mode": "normal",
"column": [
{
"name": "rowkey",
"type": "string"
},
{
"name": "info: age",
"type": "string"
},
{
"name": "info: birthday",
"type": "date",
"format":"yyyy-MM-dd"
},
{
"name": "info: company",
"type": "string"
},
{
"name": "address: contry",
"type": "string"
},
{
"name": "address: province",
"type": "string"
},
{
"name": "address: city",
"type": "string"
}
],
"range": {
"startRowkey": "",
"endRowkey": "",
"isBinaryRowkey": true
}
}
},
"writer": {
"name": "txtfilewriter",
"parameter": {
"path": "/Users/shf/workplace/datax_test/hbase11xreader/result",
"fileName": "qiran",
"writeMode": "truncate"
}
}
}
]
}
}
步骤三:执行同步命令
执行如下命令同步数据。
python datax.py -j"-Xms4g -Xmx4g" hbase_to_ots.json
其中-j"-Xms4g -Xmx4g"
可以限制占用JVM内存的大小;如果不指定,将会使用conf/core.json
中的配置,默认为1 GB。
相关操作
HBase数据迁移到表格存储后,您可以使用Tablestore SDK或者Tablestore HBase Client读取表格存储的数据,具体操作,请参见从HBase Client迁移到Tablestore HBase Client。