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
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=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安装
- 下载安装包
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项目
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安装
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)启动任务
任务管理 -> 启动