无码人妻精品一区二区三18禁,影音先锋男人AV橹橹色,污污污污污污www网站免费,日韩成人av无码一区二区三区,欧美性受xxxx狂喷水

基于 DataX 的 TDengine 2.* 版本數據遷移工具

Zhiyu Yang

2021-10-26 /

基于 DataX,我們實現了 TDengine Database 的數據(ju)(ju)遷(qian)(qian)移工具,目前可以做到 OpenTSDB、MySQL、TDengine 等不同數據(ju)(ju)源之間的數據(ju)(ju)遷(qian)(qian)移。這(zhe)篇文章的目的是,讓用戶能夠快速了解如何使用這(zhe)個數據(ju)(ju)遷(qian)(qian)移工具。

1、介紹

基(ji)于 DataX,我們完(wan)成了 TDengine 的適(shi)配,對(dui)于 TDengine 2.* 版本,實現了 TDengine20Reader 和(he) TDengine20Writer 兩個插件。

TDengine20Reader 提供的(de)功能:

  1. 支持通過 SQL 進行數據篩選;
  2. 根據時間間隔進行任務切分;
  3. 支持 TDengine 的全部數據類型;
  4. 支持批量讀取,通過 batchSize 參數控制批量拉取結果集的大小,提高讀取性能。

TDengine20Writer 支持的(de)功能:

  1. 支持 OpenTSDB 的 json 格式的行協議,使用 TDengine 的 schemaless 方式寫入 TDengine。
  2. 支持批量寫入,通過 batchSize 參數控制批量寫入的數量,提高寫入性能。

2、實現原理

TDengine20Reader:使用 JNI 方式(shi)從 TDengine 拉取數據。

TDengine20Writer:使用 JNI 方式寫(xie)數據(ju)到 TDengine。對(dui) OpenTSDB 等使用 schemaless 寫(xie)入,對(dui)于 MySQL 等關系型數據(ju)庫,使用批量 stmt 寫(xie)入。

3、使用方法

3.1 環境準備

(1)需要(yao)安裝 TDengine 客戶端(duan)

(2)需要安(an)裝(zhuang) JDK 1.8 環境(運行 DataX)

(3)需要安(an)裝 Python 環境(jing)(運行 DataX)

(4)需要 maven 編譯(yi)環境(如果不(bu)編譯(yi) DataX 則(ze)可以不(bu)安裝 maven)

3.2 安裝

下載源碼

git clone //github.com/taosdata/DataX.git

編譯打包

cd DataX
mvn -U clean package assembly:assembly -Dmaven.test.skip=true

安裝

cp target/datax.tar.gz your_install_dir
cd your_install_dir
tar -zxvf dataX.tar.gz

3.3 數據遷移 Job 的配置

3.3.1 時序數據的遷移配置

以(yi)一(yi)個(ge)從 OpenTSDB 到 TDengine 2.* 版本的數(shu)據遷移(yi)任務為例,配(pei)置文件 opentsdb2tdengine.json 如下(xia):

 {
 ??"job":{
 ????"content":[{
 ??????"reader": {
 ????????"name":?"opentsdbreader",
 ????????"parameter": {
 ??????????"endpoint":?"//192.168.1.180:4242",
 ??????????"column": ["weather_temperature"],
 ??????????"beginDateTime":?"2021-01-01 00:00:00",
 ??????????"endDateTime":?"2021-01-01 01:00:00"
 ????????}
 ??????},
 ????"writer": {
 ??????"name":?"tdengine20writer",
       "parameter": {
            "username": "root",
            "password": "taosdata",
            "connection": [
              {
                "table": [
                  "matric1"
                ],
                "jdbcUrl": "jdbc:TAOS://192.168.1.101:6030/test?timestampFormat=TIMESTAMP"
              }
            ],
            "batchSize": 1000,
            "ignoreTagsUnmatched": true
          }
 ??????}
 ????}],
 ????"setting": {
 ??????"speed": {
 ????????"channel":?1
 ??????}
 ????}
 ??}
 } 

配置說明:

  • 上面的配置表示,從 192.168.1.180 的 OpenTSDB,到 192.168.1.101 的 TDengine 的遷移。遷移 metric 為 weather_temperature,時間從 2021-01-01 00:00:00 開始,到 2021-01-01 01:00:00 結束的數據。
  • reader 使用 datax 的 opentsdbreader,parameter 的配置請參考:
  • tdengine20writer 的 parameter 中,host,port,dbname,user,password 都為必須項,沒有默認值。batchSize 不是必須項,默認值為 1。詳細參考:
  • TDengine 中,如果 dbname 指定的 database 不存在,則需要在遷移前創建數據庫。

3.3.2 關系型數據的遷移配置

以一(yi)個從 MySQL 到 TDengine 2.* 版(ban)本的數據(ju)遷移任務為例,配置文件(jian) mysql2tdengine.json 如下:

 {
 ??"job": {
 ????"content": [{
 ??????"reader": {
 ????????"name":?"mysqlreader",
 ????????"parameter": {
 ??????????"username":?"root",
 ??????????"password":?"root",
 ??????????"column": ["id","name"],
 ??????????"splitPk":?"id",
 ??????????"connection": [{
 ????????????"table": ["test"],
 ????????????"jdbcUrl": ["jdbc:mysql://192.168.1.101:3306/db"]
 ??????????}]
 ????????}
 ??????},
 ??????"writer": {
 ????????"name":?"tdengine20writer",
 ????????"parameter": {
 ??????????"host":?"192.168.1.105",
 ??????????"port":?6030,
 ??????????"dbname":?"test",
 ??????????"user":?"root",
 ??????????"password":?"taosdata",
 ??????????"batchSize":?1000
 ????????}
 ??????}
 ????}],
 ????"setting": {
 ??????"speed": {
 ????????"channel":?1
 ??????}
 ????}
 ??}
 } 

配置說明:

  • 上面的配置表示,從 192.168.1.101 的 MySQL,到 192.168.1.105 的 TDengine 的遷移。遷移 test 表中 id、name 兩列到 TDengine,使用 id 列作為任務劃分的列。
  • reader 使用 datax 的 mysqlreader,parameter 的配置請參考:

3.3.3 TDengine 之間的遷移配置

以一個(ge)從 TDengine 到 TDengine 的數據遷移(yi)為例,配置文(wen)件 tdengine2tdengine.json 如下:

 {
 ??"job": {
 ????"content": [{
 ??????"reader": {
 ????????"name":?"tdengine20reader",
 ????????"parameter": {
 ??????????"host":?"192.168.1.82",
 ??????????"port":?6030,
 ??????????"db":?"test",
 ??????????"user":?"root",
 ??????????"password":?"taosdata",
 ??????????"sql":?"select * from weather",
 ??????????"beginDateTime":?"2021-01-01 00:00:00",
 ??????????"endDateTime":?"2021-01-02 00:00:00",
 ??????????"splitInterval":?"1h"
 ????????}
 ??????},
 ??????"writer": {
 ????????"name":?"tdengine20writer",
 ????????"parameter": {
 ??????????"host":?"192.168.1.105",‘
 ??????????"port":?6030,
 ??????????"dbname":?"test",
 ??????????"user":?"root",
 ??????????"password":?"taosdata",
 ??????????"batchSize":?1000
 ????????}
 ??????}
 ????}],
 ????"setting": {
 ??????"speed": {
 ????????"channel":?1
 ??????}
 ????}
 ??}
 } 

配置說明:

  • 上面的配置表示,從 192.168.1.82 到 192.168.1.105 的 TDengine 之間的數據遷移。tdenginereader 根據 sql、begieDateTime、endDateTime 過濾數據,使用 splitInteval 進行任務劃分。
  • reader 使用 tdengine20reader,parameter 的配置請參考:

3.4 執行遷移任務

將上面寫(xie)好的(de)配置(zhi)文件(jian)保(bao)存在 datax/job 目(mu)錄下(xia),執行下(xia)面的(de)命(ming)令(ling),啟動(dong)數(shu)據(ju)遷移任務:

python bin/datax.py job/opentsdb2tdengine.json

4、限制條件

(1)目(mu)前,DataX 自帶的 opentsdbreader 僅支(zhi)持 OpenTSDB-2.3.X 版本。詳細(xi)參考:

(2)數據遷移工具(ju)依賴 TDengine 客戶端中(zhong)的 libtaos.so/taos.dll/libtaos.dylib,需(xu)要 TDengine-client-2.3.1.0 以上版(ban)本(ben)。

5、FAQ

(1)如何估算一個數(shu)據(ju)遷移(yi)任(ren)務所(suo)需要的資源

DataX 的每個 reader 按照自己的 task 切分策略進行任務劃分,具體請參考 DataX 的(de)任(ren)務(wu)調(diao)度規則。在估算資(zi)源是(shi),需要按照(zhao)數(shu)據(ju)遷(qian)移的(de)數(shu)據(ju)量,任(ren)務(wu)切分規則和網絡帶寬限制等綜合考慮(lv),最好以實際數(shu)據(ju)遷(qian)移測試結果為準。

(2)TDengine20Writer 的 batchSize 設(she)置多(duo)大效率最高?

batchSize 是控制批量寫入(ru)的(de)參數,在獲取 batchSize 行紀錄后,TDengineWriter 會向(xiang) TDengine 發送一(yi)次寫入(ru)請求,這減(jian)少了與 TDengine 交互次數,從而(er)提高了性能。從測試結果來看,batchSize 在 500-1000 范圍內效(xiao)率最高。

(3)job 的配置中 channel 數為多少合適?

job 中的(de) channel 數(shu)為流(liu)量(liang)控制(zhi)的(de)參數(shu),每個(ge) channel 都需要(yao)開(kai)辟(pi)一(yi)塊內存,用來(lai)緩(huan)存數(shu)據。如果 channel 設置(zhi)過大,會引起(qi) OOM,所以 channel 數(shu)并(bing)不(bu)是越(yue)大越(yue)好。增加(jia) channel 數(shu)后(hou),需要(yao)提高 JVM 內存大小。從(cong)測(ce)試結果來(lai)看(kan),channel 在 1~6 的(de)范圍內都是合適,能夠保(bao)證 DataX 的(de)流(liu)量(liang)最大化即可。