安装文档

  • 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

datax,datax-web使用相关推荐

  1. datax(datax官网)

    DataPipeline与Datax有什么区别? 监控预警: DataPipeline有可视化的过来程监控,提供多样化的图表,辅助运维,故障问题可实时自预警. Datax:依赖工具日志2113定位故障 ...

  2. datax 高级_GitHub - xhhx55/DataX

    DataX DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hive.ADS.HBase.TableS ...

  3. datax 高级_GitHub - HeyTool/DataX

    DataX DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hive.ADS.HBase.TableS ...

  4. DataX及DataX-Web

    大数据Hadoop之--数据同步工具DataX 数据采集工具-DataX datax详细介绍及使用 一.概述 DataX 是阿里云DataWorks数据集成的开源版本,在阿里巴巴集团内被广泛使用的离线 ...

  5. DataX以及增量同步

    目录 第一部分:DataX 一.DataX基本知识 二.DataX应用 三.DataX安装测试 四.DataX性能调优 五.DataX源码编译问题整理 六.datax增量同步 第二部分:增量同步 一. ...

  6. mysql etl工具干什么的_基于现在接触的ETL工具(datax和kettle)做个小总结

    现阶段需要做数据库同步工作,目前调研了两个工具datax和kettle 目前虽然环境使用的是kettle+jenkins调度平台方案,但是多多少少会有一些不太令人满意的地方,但应该算是满足大部分需求了 ...

  7. datax 持续数据同步_Datax 数据同步

    官方Hello入门例子{ "job": { "content": [ { "reader": { "name": &qu ...

  8. 离线数据同步神器:DataX,支持几乎所有异构数据源的离线同步到MaxCompute

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 概述 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlSer ...

  9. datax安装+配置+使用文档

    1 DataX离线同步工具DataX3.0介绍 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hiv ...

  10. DataX配置及使用

    摘要: 一. DataX3.0概览 ​ DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.ODPS.HBase.FTP等各种异构数 ...

最新文章

  1. C++---拷贝构造函数和赋值构造函数
  2. 【细说软件工程】《软件工程》Software Engineering
  3. Kalman Filter 学习笔记
  4. Just $h$-index HDU - 6278(主席树找区间大于等于k的个数)
  5. Angular Material 攻略 04 Icon
  6. 使用多线程拷贝文件夹
  7. jmeter-5.3 测试http接口动态数据 windows+Linux双环境
  8. Ghost安装之后,键盘出现字符出现乱码
  9. Java关于周跨年的周数计算
  10. python求解非线性多元方程_求解python中的colebrook(非线性)方程
  11. Python 字符串和列表的转化 ,简单到尖叫
  12. 【Python】Scrapy入门实例
  13. 字节跳动教育部分开始裁员,N+2赔付...一大波读者失业
  14. java war 反编译_war反编译成java项目
  15. android多媒体框架学习
  16. 如何在vm虚拟机里面安装win10操作系统
  17. 计算机体系结构期末重点,计算机系统结构期末重点题目及考点
  18. python def -> : ->什么意思
  19. D. Harmonious Graph
  20. 2020年阴历三月初三 投资理财~为什么永远抄底不到最低点?

热门文章

  1. c语言中triplet的作用,C语言数据结构-三元数组Triplet
  2. matlab toolbox 目录
  3. uniapp刷新页面
  4. Transformers 库中的 Tokenizer 使用
  5. 用 Python 批量加水印
  6. 【JS】判断用户输入的用户名首位是否是字母
  7. 阿里ODPS架构与SQL过程
  8. 计算机毕业设计django基于python的读书笔记共享平台(源码+系统+mysql数据库+Lw文档)
  9. http和socket通信的区别
  10. 动态规划之背包问题(01背包问题、完全背包问题、多重背包问题 I、多重背包问题 II 、分组背包问题)