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