1. 程式人生 > 實用技巧 >異構資料庫之Datax與Datax_web的部署以及使用說明

異構資料庫之Datax與Datax_web的部署以及使用說明

DataX介紹:

DataX 是阿里開源的一個異構資料來源離線同步工具,致力於實現包括關係型資料庫(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各種異構資料來源之間穩定高效的資料同步功能。

DataX設計理念

DataX本身作為資料同步框架,將不同資料來源的同步抽象為從源頭資料來源讀取資料的Reader外掛,以及向目標端寫入資料的Writer外掛,理論上DataX框架可以支援任意資料來源型別的資料同步工作。同時DataX外掛體系作為一套生態系統, 每接入一套新資料來源該新加入的資料來源即可實現和現有的資料來源互通。

DataX外掛體系

DataX目前已經有了比較全面的外掛體系,主流的RDBMS資料庫、NOSQL、大資料計算系統都已經接入,目前支援資料如下圖。

DataX部署

  • JDK(1.8以上,推薦1.8)

  • Python(推薦Python2.6.X)

  • Apache Maven 3.x(編譯DataX)

安裝JDK

# yum search java|grep jdk  
# yum install java-1.8.0-openjdk -y

# java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)

安裝Python

[root@stephen ~]# python --version
Python 2.7.5

安裝Apache Maven 3.x

[root@stephen ~]# ls
apache-maven-3.6.1-bin.tar.gz
[root@stephen ~]# tar -xvzf apache-maven-3.6.1-bin.tar.gz 

在vi /etc/profile.d/maven.sh新增
export M2_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}

[root@stephen maven]# mvn -v
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00) Maven home: /opt/maven Java version: 1.8.0_222, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-514.26.2.el7.x86_64", arch: "amd64", family: "unix"

開始安裝DataX

[root@stephen opt]# tar -xvzf datax.tar.gz
[root@stephen opt]# ls datax
bin conf job lib log log_perf plugin script tmp

當測試顯示以下內容是,說明datax已經安裝成功
[root@stephen datax]# python bin/datax.py job/job.json
DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.
.....顯示省略.....
2019-08-21 12:08:36.709 [job-0] INFO JobContainer - 
任務啟動時刻 : 2019-08-21 12:08:26
任務結束時刻 : 2019-08-21 12:08:36
任務總計耗時 : 10s
任務平均流量 : 253.91KB/s
記錄寫入速度 : 10000rec/s
讀出記錄總數 : 100000
讀寫失敗總數 : 0

開始安裝DataX_Web

[root@roobbin src]# tar xf datax-web-2.1.2.tar.gz 
[root@roobbin src]# ls -lsa
總用量 1078932
     0 drwxr-xr-x.  3 root root       204 10月 17 09:59 .
     0 drwxr-xr-x. 15 root root       177 10月 16 22:50 ..
  9284 -rw-r--r--.  1 root root   9506321 11月 20 2019 apache-maven-3.6.3-bin.tar.gz
 22716 -rw-r--r--.  1 root root  23257692 5月  23 2019 DataX-master.zip
     0 drwxr-xr-x.  4 root root        69 10月 17 09:59 datax-web-2.1.2
212468 -rw-r--r--.  1 root root 217566120 10月 16 23:28 datax-web-2.1.2.tar.gz
185292 -rw-r--r--.  1 root root 189736377 7月   1 2018 jdk-8u151-linux-x64.tar.gz
649172 -rw-r--r--.  1 root root 664749587 6月  10 14:44 mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
[root@roobbin src]# mv datax-web-2.1.2 ../
[root@roobbin src]# cd ../datax-web-2.1.2/
[root@roobbin datax-web-2.1.2]# ls -lsa
總用量 28
 0 drwxr-xr-x.  4 root root    69 10月 17 09:59 .
 0 drwxr-xr-x. 16 root root   200 10月 17 09:59 ..
 0 drwxrwxrwx.  3 root root   104 6月  23 13:44 bin
 0 drwxr-xr-x.  2 root root    77 10月 17 09:59 packages

執行安裝指令碼(需要安裝資料庫mysql)

[root@roobbin datax-web-2.1.2]# ./bin/install.sh 
2020-10-17 10:00:09.430 [INFO] (22745) Creating directory: [/usr/local/datax-web-2.1.2/bin/../modules].
2020-10-17 10:00:09.459 [INFO] (22745)  ####### Start To Uncompress Packages ######
2020-10-17 10:00:09.462 [INFO] (22745) Uncompressing....
Do you want to decompress this package: [datax-admin_2.1.2_1.tar.gz]? (Y/N)y
2020-10-17 10:00:17.298 [INFO] (22745)  Uncompress package: [datax-admin_2.1.2_1.tar.gz] to modules directory
Do you want to decompress this package: [datax-executor_2.1.2_1.tar.gz]? (Y/N)

需要填寫資料庫的各項配置,按照提示進行輸入

啟動DataX_web

[root@localhost datax-web-2.1.2]# cd bin/
[root@localhost bin]# ll
總用量 36
-rw-r--r--. 1 root root 8842 11月  2 13:44 console.out
drwxrwxrwx. 2 root root   27 10月 30 10:14 db
-rwxr-xr-x. 1 root root 6921 6月  23 13:44 install.sh
-rwxr-xr-x. 1 root root  773 6月  23 13:44 start-all.sh
-rwxr-xr-x. 1 root root 1871 6月  23 13:44 start.sh
-rwxr-xr-x. 1 root root  770 6月  23 13:44 stop-all.sh
-rwxr-xr-x. 1 root root 1862 6月  23 13:44 stop.sh
[root@localhost bin]# 
[root@localhost bin]# 
[root@localhost bin]# 
[root@localhost bin]# ./start-all.sh 
可以看到埠9527啟動

進入視覺化介面

http://192.168.17.171:9527/index.html#/dashboard

登陸使用者名稱admin 密碼123456

踩坑日記

建立專案並且執行檢視日誌顯示如下報錯導致無法執行成功
[AnalysisStatistics.analysisStatisticsLog-53] /usr/bin/python: can't find '_main_'

解決方法如下

[root@localhost conf]# pwd
/root/datax-web-2.1.2/modules/datax-executor/conf
[root@localhost conf]# vim application.yml

# web port
server:
  port: ${server.port}
  #port: 8081

# log config
logging:
  config: classpath:logback.xml
  path: ${data.path}/applogs/executor/jobhandler
  #path: ./data/applogs/executor/jobhandler

datax:
  job:
    admin:
      ### datax admin address list, such as "http://address" or "http://address01,http://address02"
      #addresses: http://127.0.0.1:8080
      addresses: http://127.0.0.1:${datax.admin.port}
    executor:
      appname: datax-executor
      ip:
      #port: 9999
      port: ${executor.port:9999}
      ### job log path
      #logpath: ./data/applogs/executor/jobhandler
      logpath: ${data.path}/applogs/executor/jobhandler
      ### job log retention days
      logretentiondays: 30
    ### job, access token
    accessToken:

  executor:
    #jsonpath: D:\\temp\\executor\\json\\
    jsonpath: ${json.path}

  #pypath: F:\tools\datax\bin\datax.py
  pypath: /root/datax/bin/datax.py