本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務造成影響,請務必仔細閱讀。
通過DataX工具,您可以將HBase數據庫中的全量數據同步到表格存儲(Tablestore)的數據表中。
注意事項
使用DataX工具只支持同步HBase全量數據到表格存儲,不支持同步增量數據。
前提條件
已準備帶有Linux系統(tǒng)的服務器并完成如下軟件的安裝。
說明如果當前沒有帶有Linux系統(tǒng)的服務器,推薦您使用云服務器ECS部署Linux系統(tǒng)后再進行操作。更多信息,請參見通過控制臺使用ECS實例(快捷版)。
已完成Java 8(64-bit)開發(fā)環(huán)境的安裝。
已完成Python2或者Python3開發(fā)環(huán)境的安裝。
在訪問控制RAM服務側完成如下操作:
已創(chuàng)建RAM用戶并為RAM用戶授予管理表格存儲權限(AliyunOTSFullAccess)。具體操作,請參見創(chuàng)建RAM用戶和為RAM用戶授權。
警告阿里云賬號AccessKey泄露會威脅您所有資源的安全。建議您使用RAM用戶AccessKey進行操作,可以有效降低AccessKey泄露的風險。
已為RAM用戶創(chuàng)建AccessKey。具體操作,請參見創(chuàng)建AccessKey。
在表格存儲服務側已完成如下操作:
已創(chuàng)建表格存儲實例。具體操作,請參見創(chuàng)建實例。
已在實例詳情頁面獲取實例的服務地址(Endpoint)。
在概覽頁面,單擊實例名稱后,在實例詳情頁簽的實例訪問地址區(qū)域,即可查看實例的Endpoint,請根據實際選擇。
已創(chuàng)建表格存儲數據表,用于存放遷移數據。具體操作,請參見創(chuàng)建數據表。
說明創(chuàng)建數據表時建議使用HBase原主鍵或唯一索引作為表格存儲數據表的主鍵。
步驟一:下載DataX
您可以選擇下載DataX的源代碼進行本地編譯或者直接下載編譯好的壓縮包。
下載DataX的源代碼并編譯。
通過Git工具執(zhí)行以下命令下載DataX源代碼。
git clone https://github.com/alibaba/DataX.git
進入到下載的源代碼目錄后,執(zhí)行以下命令進行Maven打包。
說明此步驟會在本地編譯各種數據源的Writer和Reader,花費時間較長,請耐心等待。
mvn -U clean package assembly:assembly -Dmaven.test.skip=true
編譯完成后,進入target/datax/datax目錄,其中的目錄說明請參見下表。
目錄
說明
bin
存放可執(zhí)行的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抽取數據到本地的作業(yè)(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"
}
}
}
]
}
}
步驟三:執(zhí)行同步命令
執(zhí)行如下命令同步數據。
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。