DataX與DataX-Web安裝


1 參考文檔

datax地址:https://github.com/alibaba/DataX/blob/master/userGuid.md

datax-web地址(Windows):https://github.com/WeiYe-Jing/datax-web/blob/master/userGuid.md 、

datax-web地址(Linux):https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/datax-web-deploy.md

2 DataX前置條件

  • JDK(1.8以上,推薦1.8)
  • Python(推薦Python2.6.X)
  • Apache Maven 3.x (Compile DataX)

  注意:

  ①一定要為Python2,因為后面執行datax.py的時候,里面的Python的print會執行不了,導致運行不成功,會提示你print語法要加括號,Python2中加不加都行,Python3中必須要加,否則報語法錯。python版本查看(通常系統自帶2.x版本)

3 安裝DataX

3.1 下載tar包

方式一:直接下載DataX工具包

DataX下載地址

 

方式二:下載DataX源碼、編譯

DataX源碼

 

(1)下載datax源碼

$ git clone git@github.com:alibaba/DataX.git

(2)通過maven打包

$ cd  {DataX_source_code_home}
$ mvn -U clean package assembly:assembly -Dmaven.test.skip=true

  打包成功后的DataX包位於 {DataX_source_code_home}/target/datax/datax/ 

3.2 解壓驗證

將jar包解壓至本地某個目錄,進入bin目錄,即可運行同步作業:

$ tar -zxvf datax.tar.gz -C {YOUR_DATAX_HOME}
$ cd {YOUR_DATAX_HOME}/bin $ python datax.py {YOUR_JOB.json}

3.3 自檢腳本

python {YOUR_DATAX_HOME}/bin/datax.py {YOUR_DATAX_HOME}/job/job.json

3.4 查看配置模板

  python datax.py -r {YOUR_READER} -w {YOUR_WRITER}

$ cd  {YOUR_DATAX_HOME}/bin
$ python datax.py -r streamreader -w streamwriter

  stream->stream模板

DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.


Please refer to the streamreader document:
     https://github.com/alibaba/DataX/blob/master/streamreader/doc/streamreader.md 

Please refer to the streamwriter document:
     https://github.com/alibaba/DataX/blob/master/streamwriter/doc/streamwriter.md 
 
Please save the following configuration as a json file and  use
     python {DATAX_HOME}/bin/datax.py {JSON_FILE_NAME}.json 
to run the job.

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "streamreader", 
                    "parameter": {
                        "column": [], 
                        "sliceRecordCount": ""
                    }
                }, 
                "writer": {
                    "name": "streamwriter", 
                    "parameter": {
                        "encoding": "", 
                        "print": true
                    }
                }
            }
        ], 
        "setting": {
            "speed": {
                "channel": ""
            }
        }
    }
}
View Code

3.5 配置示例

(1)創建作業的配置文件(json格式)

  根據模板修改json文件

#stream2stream.json
{
  "job": {
    "content": [
      {
        "reader": {
          "name": "streamreader",
          "parameter": {
            "sliceRecordCount": 10,
            "column": [
              {
                "type": "long",
                "value": "10"
              },
              {
                "type": "string",
                "value": "hello,你好,世界-DataX"
              }
            ]
          }
        },
        "writer": {
          "name": "streamwriter",
          "parameter": {
            "encoding": "UTF-8",
            "print": true
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": 5
       }
    }
  }
}
View Code

(2)啟動DataX

$ cd {YOUR_DATAX_DIR_BIN}
$ python datax.py ./stream2stream.json

(3)查看結果

2021-08-31 14:07:48.816 [job-0] INFO  JobContainer - 
任務啟動時刻                    : 2021-08-31 14:07:38
任務結束時刻                    : 2021-08-31 14:07:48
任務總計耗時                    :                 10s
任務平均流量                    :               95B/s
記錄寫入速度                    :              5rec/s
讀出記錄總數                    :                  50
讀寫失敗總數                    :                   0

4 DataX-Web前置條件

  • MySQL (5.5+) 必選,對應客戶端可以選裝, Linux服務上若安裝mysql的客戶端可以通過部署腳本快速初始化數據庫
  • JDK (1.8.0_xxx) 必選
  • Maven (3.6.1+) 必選
  • DataX 必選
  • Python (2.x) (支持Python3需要修改替換datax/bin下面的三個python文件,替換文件在doc/datax-web/datax-python3下) 必選
  • 注意:主要用於調度執行底層DataX的啟動腳本,默認的方式是以Java子進程方式執行DataX,用戶可以選擇以Python方式來做自定義的改造

 

5 Linux安裝DataX-Web

5.1 下載tar包

方式一:下載官方提供的版本tar包

官方tar包下載地址   提取碼:cpsk

 

方式二:下載源碼、編譯打包

DataX-Web下載地址

直接從git下載源碼,在項目的根目錄下執行如下命令 mvn clean install ,執行成功后將會在工程的build目錄下生成安裝包 build/datax-web-{VERSION}.tar.gz 。

5.2 解壓安裝包

$ tar -zxvf datax-web-{VERSION}.tar.gz -C {YOUR-DATAX-WEB-HOME}

5.3 執行一鍵安裝腳本

(1)交互式安裝

$ cd {YOUR-DATAX-WEB-HOME}
$ ./bin/install.sh

(2)強制安裝

$ ./bin/install.sh --force

注意:在交互模式下,對各個模塊的package壓縮包的解壓以及configure配置腳本的調用,都會請求用戶確認,可根據提示查看是否安裝成功,如果沒有安裝成功,可以重復嘗試;如果不想使用交互模式,跳過確認過程,則可以使用--force參數。

5.4 數據庫初始化

(1)如果服務器上有mysql,則在執行過程中根據提醒輸入數據庫地址、端口號、用戶名、密碼、數據庫名稱

Scan out mysql command, so begin to initalize the database
Do you want to initalize database with sql: [{INSTALL_PATH}/bin/db/datax-web.sql]? (Y/N)y
Please input the db host(default: 127.0.0.1): 
Please input the db port(default: 3306): 
Please input the db username(default: root): 
Please input the db password(default: ): 
Please input the db name(default: exchangis)

(2)如果服務器上沒有mysql,則可以根據{YOUR-DATAX-WEB-HOME}/bin/db/datax-web.sql腳本手動執行,完成后需修改相關配置文件

$ vim {YOUR-DATAX-WEB-HOME}/modules/datax-admin/conf/bootstrap.properties
#Database
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USERNAME=root
DB_PASSWORD=Dataapply@123456
DB_DATABASE=dataxweb

5.5 配置

(1)配置郵件服務(可以跳過)

$ vim {YOUR-DATAX-WEB-HOME}/modules/datax-admin/bin/env.properties
# environment variables

#JAVA_HOME=""

WEB_LOG_PATH=${BIN}/../logs
WEB_CONF_PATH=${BIN}/../conf

DATA_PATH=${BIN}/../data
SERVER_PORT=9527 #默認端口號

#PID_FILE_PATH=${BIN}/dataxadmin.pid


# mail account
MAIL_USERNAME=""
MAIL_PASSWORD=""


#debug
#REMOTE_DEBUG_SWITCH=true
#REMOTE_DEBUG_PORT=7003

(2)制定PYTHON-PATH路徑

$ vim {YOUR-DATAX-WEB-HOME}/modules/datax-execute/bin/env.properties
# environment variables

#JAVA_HOME=""

SERVICE_LOG_PATH=${BIN}/../logs
SERVICE_CONF_PATH=${BIN}/../conf
DATA_PATH=${BIN}/../data


## datax json文件存放位置
JSON_PATH=${BIN}/../json


## executor_port
EXECUTOR_PORT=9999


## 保持和datax-admin端口一致,默認是9527,如果沒改動datax-admin的端口,可以忽略
DATAX_ADMIN_PORT=

## PYTHON腳本執行位置
#PYTHON_PATH=/home/hadoop/install/datax/bin/datax.py
PYTHON_PATH=



## dataxweb 服務端口
SERVER_PORT=9504

#PID_FILE_PATH=${BIN}/service.pid


#debug 遠程調試端口
#REMOTE_DEBUG_SWITCH=true
#REMOTE_DEBUG_PORT=7004

5.6 啟動服務

(1)一鍵啟動所有服務

$ {YOUR-DATAX-WEB-HOME}/bin/start-all.sh

(2)單一啟動某一模塊服務

$ {YOUR-DATAX-WEB-HOME}/bin/start.sh -m {module_name}

(3)一鍵停止所有服務

$ {YOUR-DATAX-WEB-HOME}/bin/stop-all.sh

(4)單一停止某一模塊服務

$ {YOUR-DATAX-WEB-HOME}/bin/stop.sh -m {module_name}

(5)如果啟動過程中部分模塊啟動失敗或卡住,可以退出重復執行,可以通過env.properties文件修改各模塊的環境配置

$ vim {YOUR-DATAX-WEB-HOME}/modules/{module_name}/bin/env.properties

(6)查看服務

$ jps
# 在Linux環境下使用JPS命令,查看是否出現DataXAdminApplication和DataXExecutorApplication進程,如果存在這表示項目運行成功
# 如果項目啟動失敗,請檢查啟動日志:modules/datax-admin/bin/console.out或者modules/datax-executor/bin/console.out

5.7 運行

瀏覽器地址:http://ip:port/index.html
用戶名:admin
密碼:123456
ip:datax-admin部署所在服務器的ip
port:datax-admin指定的運行端口

運行日志:默認情況下,日志在{YOUR-DATAX-WEB-HOME}/modules/{module_name}/data/applogs下;用戶可以修改application.yml中的logpath地址來指定日志目錄,用戶可以根據此日志跟蹤項目實際啟動情況。
常見異常:如果executor啟動比admin快,執行器會連接失敗,日志報“拒絕連接”錯誤,一般先啟動admin,再啟動executor,30秒后會重連,如果成功可忽略該異常。

5.8 集群部署

$ vim {YOUR-DATAX-WB-HOME}/modules/datax-executor/conf/application.yml

(1)修改 /modules/datax-executor/conf/application.yml 文件中的 admin.addresses 地址。(為了方便單機版部署,項目目前沒有將ip部分配置到env.properties,部署多節點時可以將整個地址作為變量配置到env文件)

# 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: ${python.path}
  pypath: /app/datax/bin/datax.py

(2)將官方提供的tar包或編譯后的tar包上傳到服務節點,單一啟動某一模塊服務。如:執行器需要部署多個節點,則僅需要啟動執行器,執行 ./bin/start.sh -m datax-executor 。

(3)調度中心、執行器支持集群部署,提升調度系統容災和可用性

1.調度中心集群:  
    DB配置保持一致;
    集群機器時鍾保持一致(單機集群忽視);
2.執行器集群:
    執行器回調地址(admin.addresses)需要保持一致;執行器根據該配置進行執行器自動注冊等操作。  
    同一個執行器集群內AppName(executor.appname)需要保持一致;調度中心根據該配置動態發現不同集群的在線執行器列表。

6 Windows安裝DataX-Web(開發環境)

6.1 下載源碼,IDEA打開

 

 

6.2 創建數據庫

執行 bin/db 下面的 datax_web.sql 文件(注意老版本更新語句有指定庫名)

6.3 修改項目配置

(1)修改 datax_admin 下 resources/application.yml 文件

  ①修改數據源配置,目前僅支持mysql

  #數據源
  datasource:
    #    username: root
    #password: root
    #url: jdbc:mysql://localhost:3306/datax_web?serverTimezone=Asia/Shanghai&useLegacyDatetimeCode=false&useSSL=false&nullNamePatternMatchesAll=true&useUnicode=true&characterEncoding=UTF-8
    password: ${DB_PASSWORD:password}
    username: ${DB_USERNAME:username}
    url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_DATABASE:dataxweb}?serverTimezone=Asia/Shanghai&useLegacyDatetimeCode=false&useSSL=false&nullNamePatternMatchesAll=true&useUnicode=true&characterEncoding=UTF-8
    driver-class-name: com.mysql.jdbc.Driver

  ②修改日志路徑

# 配置mybatis-plus打印sql日志
logging:
  #level:
  #  com.wugui.datax.admin.mapper: info
  #path: ./data/applogs/admin
  level:
    com.wugui.datax.admin.mapper: error
    path: ${data.path}/applogs/admin

  ③修改郵件發送配置

  # datax-web email
  mail:
    host: smtp.qq.com
    port: 25
    #username: xxx@qq.com
    #password: xxx
    username: ${mail.username}
    password: ${mail.password}
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true
        socketFactory:
          class: javax.net.ssl.SSLSocketFactory

 

(2)修改 datax_executor 下 resources/application.yml 文件

  ①修改日志路徑

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

  ②修改datax.job配置

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: ${python.path}


  • admin.addresses datax_admin部署地址,如調度中心集群部署存在多個地址則用逗號分隔,執行器將會使用該地址進行"執行器心跳注冊"和"任務結果回調";
  • executor.appname 執行器AppName,每個執行器機器集群的唯一標示,執行器心跳注冊分組依據;
  • executor.ip 默認為空表示自動獲取IP,多網卡時可手動設置指定IP,該IP不會綁定Host僅作為通訊實用;地址信息用於 "執行器注冊" 和 "調度中心請求並觸發任務";
  • executor.port 執行器Server端口號,默認端口為9999,單機部署多個執行器時,注意要配置不同執行器端口;
  • executor.logpath 執行器運行日志文件存儲磁盤路徑,需要對該路徑擁有讀寫權限;
  • executor.logretentiondays 執行器日志文件保存天數,過期日志自動清理, 限制值大於等於3時生效; 否則, 如-1, 關閉自動清理功能;
  • executor.jsonpath datax json臨時文件保存路徑
  • pypath DataX啟動腳本地址,例如:xxx/datax/bin/datax.py 如果系統配置DataX環境變量(DATAX_HOME),logpath、jsonpath、pypath可不配,log文件和臨時json存放在環境變量路徑下。

6.4 啟動項目

(1)本地idea開發環境

  ①運行datax_admin下 DataXAdminApplication
  ②運行datax_executor下 DataXExecutorApplication

(2)admin啟動成功后日志會輸出三個地址,兩個接口文檔地址,一個前端頁面地址

 

 (3)啟動成功

  web地址:http://localhost:8080/index.html#/dashboard

  用戶名:admin

  密碼:123456

6.5 DataX-Web前端頁面

地址:https://github.com/WeiYe-Jing/datax-web-ui 可以自定義風格

 

7 常見問題

7.1 python路徑

(1)Linux環境

問題:

創建項目並且執行查看日志顯示如下報錯導致無法執行成功
[AnalysisStatistics.analysisStatisticsLog-53] /usr/bin/python: can't find '_main_'

解決方案:修改datax-executor的pypath路徑為服務器下datax下的datax.py路徑

$ vim {YOUR-DATAX-WEB-HOME}/modules/datax-executor/conf/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: ${python.path}
  pypath: /app/datax/bin/datax.py

 

(2)Window環境

問題:

 解決方案:

在datax-executor項目中,ExecutorJobHandler類的buildDataXExecutorCmd方法,把 cmdArr.add("python"); 改為  cmdArr.add("C:\\Python27\\python.exe");  //Python安裝目錄:

 7.2 MySQL中文字段未同步

問題:MySQL同步到MySQL過程中,數據行同步成功,但是中文字段同步后為空。

解決方案:中文解析失敗,在添加MySQL數據源時,需要在url加上字符編碼參數:&characterEncoding=UTF-8

7.3 Hive中獲取文件系統失敗

問題:

 

 解決方案:

在構建job文件時,對於hdfswriter,需要設置文件系統協議:hdfs

"writer":{
    "name":"hdfswriter",
    "parameter":{
        "column":[
            {
                "name":"id",
                "type":"int"
            },
            {
                "name":"name",
                "type":"string"
            }
        ],
        "defaultFS":"hdfs://10.207.228.17", "fieldDelimiter":",",
        "fileName":"abc",
        "fileType":"text",
        "path":"/user/hive/warehouse/test_datax",
        "writeMode":"append"
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM