datax,datax-web使用
datax,datax-web同步数据记录
安装文档
-
Datax官方文档:
https://github.com/alibaba/DataX/blob/master/userGuid.md
-
Datax-web官方文档:
https://github.com/WeiYe-Jing/datax-web/blob/master/userGuid.md
Datax部署
环境
- JDK(1.8以上,推荐1.8)
- Python(2或3都可以,linux自带py2,py3执行脚本会报错,需要修改脚本)
- Apache Maven 3.x (Compile DataX,如果下载的是官方的压缩包[datax.tar.gz],不用安装这个,如果是在git拉的项目,打包时需要)
方式一: 直接使用官方提供的压缩包:
http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
下载后解压至本地某个目录,进入bin目录
$ cd {YOUR_DATAX_HOME}/bin$ python datax.py ../job/job.json
方式二: git拉取Datax源码,自己打包
https://github.com/alibaba/DataX
1. 下载Datax源码
git clone https://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/ ,结构如下:
bin #运行脚本
conf #配置
job #同步任务目录
lib #依赖
jarlog
log_perf
plugin #数据源读写插件
script
然后进入bin目录,执行官方提供测试脚本①
python datax.py ../job/job.json
Datax-web部署
环境
-
MySQL (5.5+) 必选,对应客户端可以选装, Linux服务上若安装mysql的客户端可以通过部署脚本快速初始化数据库
-
JDK (1.8.0_xxx) 必选
-
Maven (3.6.1+) (如果是编译打包,需要,使用官方的tar包不需要)
-
DataX 必选
-
Python (2.x) (支持Python3需要修改替换datax/bin下面的三个python文件,替换文件在doc/datax-web/datax-python3下) 必选,主要用于调度执行底层DataX的启动脚本,默认的方式是以Java子进程方式执行DataX,用户可以选择以Python方式来做自定义的改造
安装
方式一: 下载官方提供的版本tar (已失效,自己去github上找把)
https://pan.baidu.com/s/13yoqhGpD00I82K4lOYtQhg
提取码:cpsk
方式二: 编译打包, 在build目录里会有安装包生成 build/datax-web-{version}.tar.gz
git clone https://github.com/WeiYe-Jing/datax-web.gitmvn clear install
部署(linux环境)
1. 解压安装包
tar -zxvf datax-web-{version}.tar.gz
2. 执行一键安装脚本
./bin/install.sh
在交互模式下,对各个模块的package压缩包的解压以及configure配置脚本的调用,都会请求用户确认,可根据提示查看是否安装成功,如果没有安装成功,可以重复尝试;如果不想使用交互模式,跳过确认过程,则执行以下命令安装
./bin/install.sh --force
3. 数据库初始化
如果你的服务上安装有mysql命令,在执行安装脚本的过程中则会出现以下提醒:
Scan out mysql command, so begin to initalize the databaseDo 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)
按照提示输入数据库地址,端口号,用户名,密码以及数据库名称,大部分情况下即可快速完成初始化。
如果服务上并没有安装mysql命令,则可以取用目录下/bin/db/datax-web.sql脚本去手动执行,完成后修改相关配置文件
安装完成后,dataxweb目录中会出现一个modules文件夹,里面包含datax-admin和datax-executor文件夹
datax-admin:是后台管理模块。
修改端口号,邮箱,日志路径(不需要可略过)
cd modules/datax-admin/bin
vim env.properties
-------------------------------------------------------
# environment variables
# JAVA_HOME=""
WEB_LOG_PATH=${BIN}/../logs
WEB_CONF_PATH=${BIN}/../conf
DATA_PATH=${BIN}/../data
SERVER_PORT=19527
# PID_FILE_PATH=${BIN}/dataxadmin.pid
# mail accountMAIL_USERNAME=""MAIL_PASSWORD=""
# debug
# REMOTE_DEBUG_SWITCH=true
# REMOTE_DEBUG_PORT=7003
修改数据库连接信息
cd modules/datax-admin/conf
vim bootstrap.properties
--------------------------------------
#Database
DB_HOST=192.168.0.x
DB_PORT=3307
DB_USERNAME=root
DB_PASSWORD=123456
DB_DATABASE=datax_web
datax-executor:执行器
修改端口号,datax中json文件位置,脚本等信息
cd modules/datax-executor/bin
vim env.properties
---------------------------------------------
# environment variables
# JAVA_HOME=""
SERVICE_LOG_PATH=${BIN}/../logs
SERVICE_CONF_PATH=${BIN}/../conf
DATA_PATH=${BIN}/../data
# datax json文件存放位置
JSON_PATH=
# executor_port
EXECUTOR_PORT=9999
# 保持和datax-admin端口一致
DATAX_ADMIN_PORT=
# PYTHON脚本执行位置
# PYTHON_PATH=/home/hadoop/install/datax/bin/datax.py
PYTHON_PATH=
## dataxweb 服务端口
SERVER_PORT=9504
启动
脚本在bin目录下
## 一键启动所有服务
$ ./bin/start-all.sh
## 单一地启动某一模块服务
$ ./bin/start.sh -m {module_name}
## 一键取消所有服务
$ ./bin/stop-all.sh
## 单一地停止某一模块服务
$ ./bin/stop.sh -m {module_name}
启动成功后,访问 http://ip:port/index.html;默认账号密码:admin/123456
使用
使用datax-web构建
1. 添加项目
2. 添加数据源
这里oracle总是获取不到Schema,代码里是根据 connection.getCatalog()获取schema,获取不到就根据数据库用户名JdbcUsername,我这边oracle用户名与schema不一样,就获取不到相关的表集合
3. 构建任务
构建完成,复制json
4. 添加任务
选择添加,任务类型选择Datax任务,将上一步的json复制进去,点击确认
将复制的json粘贴到文本框
点击确定,完成任务创建
运行任务
自己构建json
就是上面的第4步
json
{
"job": {
"setting": {
"speed": {
"byte":10485760, #全局字节大小--如果设置该值,必须在conf/core.json中设置单个channel字节大小
"channel":20, #作业通道数
"record":200000 #全局记录限制--同上,设置该参数,必须设置单个channel条数限制 },
"errorLimit": {
"record": 1000, #允许脏数据条数限制
"percentage": 0.02 #脏数据占比
}
},
"content": [
{
"reader": { #源库
"name": "rdbmsreader", #reader名称,这个可以在plugin/reader中获取 "parameter": {
"username":"", #数据库账号
"password":"", #数据库密码
"column" : [], #要同步的字段
"where":"", #where条件(不用带where)
"connection":[
{
"jdbcUrl": [], #jdbc连接(使用多个','隔开) "table": "", #表名称
"querySql": "" #如果同步sql较为复杂,可以使用这个直接写sql;使用这个,上面的column,where可以不用
}
],
"sliceRecordCount": 100000
}
},
"writer": { #目标库
"name": "streamwriter", # 名称,这个可以在plugin/writer中获取 "parameter": {
"writeMode": "insert", # 输出类型 insert、update(不存在新增,存在更新) "username": "", # 数据库账号
"password": "", # 数据库密码
"preSql": [ # 前置执行sql
"truncate table table_name"
],
"column":[ # 同步字段
target_sql
],
"connection": [
{
"table": [
"table_name"
],
"jdbcUrl": ""
}
]
}
}
}
]
}
}
问题
安装好后,第一次测试,可能会出现:
com.alibaba.datax.common.exception.DataXException: Code:[Framework-03], Description:[DataX引擎配置错误,该问题通常是由于DataX安装错误引起,请联系您的运维解决 .]. - 在有总bps限速条件下,单个channel的bps值不能为空,也不能为非正数
at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:30) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.job.JobContainer.adjustChannelNumber(JobContainer.java:430) ~[datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.job.JobContainer.split(JobContainer.java:387) ~[datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.job.JobContainer.start(JobContainer.java:117) ~[datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.Engine.start(Engine.java:93) [datax-core-0.0.1-SNAPSHOT.jar:na] at com.alibaba.datax.core.Engine.entry(Engine.java:175) [datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.Engine.main(Engine.java:208) [datax-core-0.0.1-SNAPSHOT.jar:na]2022-03-29 13:51:00.639 [job-0] INFO StandAloneJobContainerCommunicator - Total 0 records, 0 bytes | Speed 0B/s, 0 records/s | Error 0 records, 0 bytes | All Task WaitWriterTime 0.000s | All Task WaitReaderTime 0.000s | Percentage 0.00%2022-03-29 13:51:00.640 [job-0] ERROR Engine -
经DataX智能分析,该任务最可能的错误原因是:com.alibaba.datax.common.exception.DataXException: Code:[Framework-03], Description:[DataX引擎配置错误,该问题通常是由于DataX安装错误引起,请联系您的运维解决 .]. - 在有总bps限速条件下,单个channel的bps值不能为空,也不能为非正数
at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:30) at com.alibaba.datax.core.job.JobContainer.adjustChannelNumber(JobContainer.java:430)
at com.alibaba.datax.core.job.JobContainer.split(JobContainer.java:387)
at com.alibaba.datax.core.job.JobContainer.start(JobContainer.java:117)
at com.alibaba.datax.core.Engine.start(Engine.java:93)
at com.alibaba.datax.core.Engine.entry(Engine.java:175)
at com.alibaba.datax.core.Engine.main(Engine.java:208)
在有总bps限速条件下,单个channel的bps值不能为空,也不能为非正数
在conf/core.json中修改
"transport": {
"channel": {
"class": "com.alibaba.datax.core.transport.channel.memory.MemoryChannel",
"speed": {
"byte": 2000000,
"record": -1
},
"flowControlInterval": 20,
"capacity": 512,
"byteCapacity": 67108864
},
"exchanger": {
"class": "com.alibaba.datax.core.plugin.BufferedRecordExchanger",
"bufferSize": 32
}
}
修改core>transport>channel>speed>byte,这里改为2000000大约2M左右
window测试时,命令界面出现中文乱码,输入下面命令,在执行同步脚本即可
..\datax\bin>chcp 65001
更多推荐
所有评论(0)