DataX、DataXWeb的安装、使用(兼容MySQL8.0)

1,786 阅读5分钟

1. 安装

环境准备

  • 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方式来做自定义的改造
  • datax-web可选,推荐使用

1.1 JDK安装

1)安装必要的插件

yum -y install wget lrzsz vim git

2)查看当前Java版本

java -version

3)卸载JDK

rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

4)Windows下载jdk

www.oracle.com/java/techno…

5)上传jdk文件

rz

选择jdk-8u311-linux-x64.tar.gz

6)解压JDK

tar -zxvf jdk-8u311-linux-x64.tar.gz -C /opt/module/

7)添加变量

vim /etc/profile.d/my_env.sh\

#JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_311

export PATH=PATH:PATH:JAVA_HOME/bin

8)刷新环境变量

source /etc/profile.d/my_env.sh

9)验证JDK安装

java -version

1.2 Python安装

1)查看当前版本

python --version

如果是2.6、2.7则不需要安装,Python也不能删除,否则系统可能出问题。

如果是3.x,使用datax-web中的文件替换,即可正常使用datax

2)下载Python

wget www.python.org/ftp/python/…

3)解压Python

tar -zxvf Python-2.7.5.tgz -C /opt/module/

4)准备编译环境

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

5)编译安装

进入Python目录

cd Python-2.7.5/

6)编译安装

./configure --prefix=/opt/module/python-2.7.5

make && make install

1.3 Maven安装

  1. 下载安装包

cd /tmp/

wget archive.apache.org/dist/maven/…

2)解压缩maven

tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /opt/module/

3)修改文件名

mv apache-maven-3.6.3/ maven-3.6.3

4)配置maven环境变量

vim /etc/profile

文件添加

#MAVEN_HOME

export MAVEN_HOME=/opt/module/maven-3.6.3

export PATH=$PATH:$MAVEN_HOME/bin

刷新环境变量

source /etc/profile

5)验证结果

mvn -version

结果显示

Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)

Maven home: /opt/module/maven-3.6.3

Java version: 1.8.0_212, vendor: Oracle Corporation, runtime: /opt/module/jdk1.8.0_212/jre

Default locale: zh_CN, platform encoding: UTF-8

OS name: "linux", version: "3.10.0-1062.el7.x86_64", arch: "amd64", family: "unix"

1.4 DataX安装

1.4.1 下载安装

wget datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.g…

之后的步骤和下面3)一样

1.4.2 源码安装

1)获取源码

git clone <git@github.com:alibaba/DataX.git>

2)打包

mvn -U clean package assembly:assembly -Dmaven.test.skip=true

3)解压

tar -zxvf datax.tar.gz -C /opt/module/

4)新版本需要删除隐藏文件,不然运行会出错误

cd /opt/module/datax/

rm -rf plugin/*/._*

5)运行自检脚本

python bin/datax.py job/job.json

6)从stream流读取数据并打印到控制台

python bin/datax.py -r streamreader -w streamwriter

1.5 编译DataX,兼容MySQL8.0

1.5.1 IDEA克隆DataX项目

gitee.com/mirrors/Dat…

1.5.2 修改datax-all的pom文件

1)注释不需要并且出错的模块

<!-- reader -->
<!--        <module>tsdbreader</module>-->
<!--        <module>opentsdbreader</module>-->

<!-- writer -->
<!--        <module>tsdbwriter</module>-->
<!--        <module>oscarwriter</module>-->

2)修改MySQL驱动版本

<mysql.driver.version>8.0.11</mysql.driver.version>\

1.5.3 修改类

1)com/alibaba/datax/plugin/rdbms/util/DataBaseType.java类

MySql("mysql", "com.mysql.cj.jdbc.Driver"),
Tddl("mysql", "com.mysql.cj.jdbc.Driver"),

2)DataBaseType.java类的appendJDBCSuffixForReader()方法

case DRDS:
    suffix = "yearIsDateType=false&zeroDateTimeBehavior=CONVERT_TO_NULL&tinyInt1isBit=false&rewriteBatchedStatements=true&serverTimezone=UTC&useSSL=false";
    if (jdbc.contains("?")) {
        result = jdbc + "&" + suffix;
    } else {
        result = jdbc + "?" + suffix;
    }
    break;

3)DataBaseType.java类的appendJDBCSuffixForWriter()方法

case MySql:
case DRDS:
    suffix = "yearIsDateType=false&zeroDateTimeBehavior=CONVERT_TO_NULL&rewriteBatchedStatements=true&tinyInt1isBit=false&serverTimezone=UTC&useSSL=false";
    if (jdbc.contains("?")) {
        result = jdbc + "&" + suffix;
    } else {
        result = jdbc + "?" + suffix;
    }
    break;

1.5.4 修改maven仓库文件

打包时,出现依赖错误无法下载

1) eigenbase:eigenbase-properties:1.1.4依赖出错

在以下网站下载

public.nexus.pentaho.org/service/res…

mvn指令导入到本地的maven库

mvn install:install-file -Dfile=D:\down\eigenbase-properties-1.1.4.jar -DgroupId=eigenbase -DartifactId=eigenbase-properties -Dversion=1.1.4 -Dpackaging=jar

-Dfile=下载的jar包所在的文件夹

m可以执行mvn指令 2) org.pentaho:pentaho-aggdesigner-algorithm:5.1.5-jhyde依赖出错

在以下网站下载pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar

public.nexus.pentaho.org/service/res…

mvn指令导入到本地的maven库

mvn install:install-file -Dfile=D:\down\pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar -DgroupId=org.pentaho -DartifactId=pentaho-aggdesigner-algorithm -Dversion=5.1.5-jhyde -Dpackaging=jar

-Dfile=下载的jar包所在的文件夹

1.5.5 打包成tar.gz文件

执行mvn指令

mvn -U clean package assembly:assembly -Dmaven.test.skip=true

生成tar.gz文件

target/datax.tar.gz

将datax.tar.gz上传到Linux

后续安装步骤参考DataX安装

1.5.6 执行任务

job文件要修改

  "core": {
    "transport": {
      "channel": {
        "speed": {
          "byte": 1048576
        }
      }
    }
  },

    "job": {
        "setting": {
            "speed": {
                "channel":3,
                "byte":10485760
            },
            "errorLimit": {
                "record": 0,
                "percentage": 0.02
            }
        },

要有core

job中要有channel

数字都要大于0

python bin/datax.py job/job.json

1.6 DataX Web安装

地址:github.com/WeiYe-Jing/…

1.6.1 DataX Web安装

1)获取源码

git clone gitee.com/WeiYe-Jing/…

2)打包

进入项目根目录

cd datax-web/

mvn clean install

3)解压

tar -zxvf build/datax-web-2.1.2.tar.gz -C /opt/module/

4)安装

进入安装目录

cd /opt/module/datax-web-2.1.2/

以下选择一个执行

交互式安装(选择这个)

bin/install.sh

非交互式安装

bin/install.sh --force

如果你的服务上安装有mysql命令,在执行安装脚本的过程中则会出现以下提醒:

Do you want to initalize database with sql: [/opt/module/datax-web-2.1.2/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: dataxweb)

按照自己的数据库填写就可以

如果服务上并没有安装mysql命令,则可以取用目录下/bin/db/datax-web.sql脚本去手动执行,完成后修改相关配置文件

vim modules/datax-admin/conf/bootstrap.properties

DB_HOST=xxx

DB_PORT=xxx

DB_USERNAME=xxx

DB_PASSWORD=xxx

DB_DATABASE=xxx

1.6.2 修改项目配置

进入项目根目录

cd /opt/module/datax-web-2.1.2/

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

vim modules/datax-admin/conf/application.yml

# 修改邮件发送配置

# datax-web email

mail:

host: smtp.163.com

port: 25

#username: xxx@qq.com

#password: xxx

username: xxx

password: xxx

properties:

mail:

smtp:

auth: true

starttls:

enable: true

required: true

socketFactory:

class: javax.net.ssl.SSLSocketFactory\

# 配置mybatis-plus打印sql日志

logging:

#level:

# com.wugui.datax.admin.mapper: info

#path: ./data/applogs/admin

level:

com.wugui.datax.admin.mapper: error

path:xxx

2)修改datax.job配置

vim modules/datax-executor/conf/application.yml

# 修改DataX启动脚本地址和日志地址

# web port

server:

port: ${server.port}

#port: 8081

# log config

logging:

config: classpath:logback.xml

path: xxx

#path: xxx

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: xxx

### 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: xxx

1.7 DataX Web的基本使用

1.7.1 启动DataX Web

1)一键启动

datax-web

bin/start-all.sh

是否有以下程序运行

2)查看进程

输入jps命令

jps

DataXAdminApplication

DataXExecutorApplication

3)进入DataX Web

xxx:9527/index.html

用户名:admin

密码:123456

4)关闭DataX Web

bin/stop-all.sh

1.7.2 运行任务

1)添加项目

项目管理 -> 添加

2)添加数据源

数据源管理 -> 添加

添加数据源的时候,记得加上库名,不然后续构建任务的时候,字段不会显示。

3)添加任务模板

DataX任务模板 -> 添加

4)任务构建

任务管理 -> 任务构建

构建reader

如果没有字段名,在添加数据源的时候,加上库名。

构建writer

字段映射

构建

如果构建失败,可以直接将json粘贴在以下页面

5)启动任务

任务管理 -> 启动

6)查看日志