datax初識與docker安裝datax與datax-web

  一、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、日誌查看

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章