一、DataX 是阿里雲 DataWorks數據集成 的開源版本,在阿里巴巴集團內被廣泛使用的離線數據同步工具/平臺。DataX 實現了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各種異構數據源之間高效的數據同步功能。
簡單一點說明就是:datax是提供一個各種數據庫異構的數據庫同步工具,效率很高。當然和flinkX也是有一定的相識度的,但是flink本身更加適合流式處理,datax更適合離線數據庫處理。
二、簡單的圖片說明:
三、適配說明:
類型 | 數據源 | Reader(讀) | Writer(寫) | 文檔 |
---|---|---|---|---|
RDBMS 關係型數據庫 | MySQL | √ | √ | 讀 、寫 |
Oracle | √ | √ | 讀 、寫 | |
OceanBase | √ | √ | 讀 、寫 | |
SQLServer | √ | √ | 讀 、寫 | |
PostgreSQL | √ | √ | 讀 、寫 | |
DRDS | √ | √ | 讀 、寫 | |
Kingbase | √ | √ | 讀 、寫 | |
通用RDBMS(支持所有關係型數據庫) | √ | √ | 讀 、寫 | |
阿里雲數倉數據存儲 | ODPS | √ | √ | 讀 、寫 |
ADB | √ | 寫 | ||
ADS | √ | 寫 | ||
OSS | √ | √ | 讀 、寫 | |
OCS | √ | 寫 | ||
Hologres | √ | 寫 | ||
AnalyticDB For PostgreSQL | √ | 寫 | ||
阿里雲中間件 | datahub | √ | √ | 讀 、寫 |
SLS | √ | √ | 讀 、寫 | |
阿里雲圖數據庫 | GDB | √ | √ | 讀 、寫 |
NoSQL數據存儲 | OTS | √ | √ | 讀 、寫 |
Hbase0.94 | √ | √ | 讀 、寫 | |
Hbase1.1 | √ | √ | 讀 、寫 | |
Phoenix4.x | √ | √ | 讀 、寫 | |
Phoenix5.x | √ | √ | 讀 、寫 | |
MongoDB | √ | √ | 讀 、寫 | |
Cassandra | √ | √ | 讀 、寫 | |
數倉數據存儲 | StarRocks | √ | √ | 讀 、寫 |
ApacheDoris | √ | 寫 | ||
ClickHouse | √ | 寫 | ||
Databend | √ | 寫 | ||
Hive | √ | √ | 讀 、寫 | |
kudu | √ | 寫 | ||
selectdb | √ | 寫 | ||
無結構化數據存儲 | TxtFile | √ | √ | 讀 、寫 |
FTP | √ | √ | 讀 、寫 | |
HDFS | √ | √ | 讀 、寫 | |
Elasticsearch | √ | 寫 | ||
時間序列數據庫 | OpenTSDB | √ | 讀 | |
TSDB | √ | √ | 讀 、寫 | |
TDengine | √ | √ | 讀 、寫 |
四、用docker方式安裝datax,集成datax-web
1)安裝包下載,(所有下載格式爲:*.tar.gz)
datax的官網說明:https://github.com/alibaba/DataX/tree/datax_v202303,根據版本選擇即可。
datax下載地址:https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202303/datax.tar.gz,這個版本大於1.48G。
datax-web現在地址:https://github.com/WeiYe-Jing/datax-web/tags,下載最新版即可。
2)修改datax-web部分
1、將datax-web工程解壓到處自己的的編譯器。
2、修改針對於docker的配置
a、在datax-admin中的datax-admin.sh中加入環境變量,主要爲數據庫配置
JAVA_OPTS=${JAVA_OPTS}" -DDB_HOST="${DB_HOST}" -DDB_PORT="${DB_PORT}" -DDB_USERNAME="${DB_USERNAME}" -DDB_PASSWORD="${DB_PASSWORD}" -DDB_DATABASE="${DB_DATABASE}
加在:
b、加入心跳或者,修改啓方式
說明:因爲datax-admin和datax-executor腳本中都是採用nohup <execute_scripts> ><log> &的後臺形式,在docker中這種方式不能成爲監控服務,會被一直重啓。
在datax-web工程的bin目錄下加入心跳,目的最大程度的減少對於源代碼和腳本的影響,加入一個監控就行。:
while true do jps | grep "Datax*" sleep 30 done
3、打包
mvn clean install
3)製作docker鏡像
1、準備需要的文件
a、datax.tar.gz # 下載的datax的原生tar.gz包。
b、datax-web-2.1.2.tar.gz #打包後的datax-web.tar.gz文件
c、Dockerfile-DataxWeb # dockerfile,其中sed部分爲了修改問題,加入
FROM java:8 RUN mkdir -p /datax WORKDIR /datax ADD ./datax.tar.gz . ADD ./datax-web-2.1.2.tar.gz . RUN sed -i 's/"byte": -1/"byte": 2097152/g' ./datax/conf/core.json ENV DATAX_HOME=/datax/datax CMD sh -c "./datax-web-2.1.2/bin/install.sh --force" && sh -c "./datax-web-2.1.2/bin/start-all.sh" && sh -c "./datax-web-2.1.2/bin/health.sh"
d、docker-compose.yml
version: '3' services: xbd-mysql: image: mysql:8.0.25 container_name: xbd-mysql restart: always privileged: true ports: - 3306:3306 environment: - TZ=Asia/Shanghai - MYSQL_ROOT_PASSWORD=root volumes: - ./db:/docker-entrypoint-initdb.d - /var/lib/mysql:/var/lib/mysql command: --lower_case_table_names=1 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --default-authentication-plugin=mysql_native_password xbd-datax-web: build: context: ./ dockerfile: ./Dockerfile-DataxWeb image: xbd-datax-web container_name: xbd-datax-web restart: always privileged: true ports: - 8080:9527 environment: - TZ=Asia/Shanghai - DB_HOST=xbd-mysql - DB_PORT=3306 - DB_USERNAME=root - DB_PASSWORD=root - DB_DATABASE=datax depends_on: - xbd-mysql
e、db數據庫初始化文件
datax_web.sql # 文件來着data-web工程的bin目錄下
在最頭部加入以下創建庫的過程:
CREATE DATABASE IF NOT EXISTS datax DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE datax;
4)docker-compose運行
docker-compose up -d
五、頁面測試:
1)界面地址:
a、http://<ip>:<port>/index.html # 主頁
b、http://<ip>:<port>/doc.html # sagger頁面
2)使用:
a、創建項目
b、創建模版:
c、任務構建
d、日誌查看