-
2022-07-31 22:49:22
0. 前言
DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。
DataX Web是在DataX之上开发的分布式数据同步工具,提供简单易用的 操作界面,降低用户使用DataX的学习成本,缩短任务配置时间,避免配置过程中出错。用户可通过页面选择数据源即可创建数据同步任务,支持RDBMS、Hive、HBase、ClickHouse、MongoDB等数据源,RDBMS数据源可批量创建数据同步任务,支持实时查看数据同步进度及日志并提供终止同步功能,集成并二次开发xxl-job可根据时间、自增主键增量同步数据。
为了实现两个数据库之间的数据交换,企业级有ODI等,此处尝试DataX做小型数据交换。
1. 安装DataX
下载并解压
wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz tar -zxvf datax.tar.gz
需删除脚本,否则启动会报错
位置信息错误,您提供的配置文件[datax/plugin/reader/._xxxx/plugin.json]不存在
操作如下:
cd datax/plugin find ./* -type f -name "._*er"
如果列出了一堆文件,在plugin文件夹下执行
rm -rf */._*
【谨慎操作,pwd确认目录】
再次查看没有即可。具体参考官方安装地址:https://github.com/alibaba/DataX/blob/master/userGuid.md
2. 安装DataX-Web
参考:官方教程
方式一:下载官方提供的版本tar版本包 点击下载 提取码:cpsk
备注:目前200兆,如果百度云太慢,可以自行打包,参考二。方式二:编译打包(官方提供的tar包跳过)
直接从Git上面获得源代码,在项目的根目录下执行如下命令mvn clean install
执行成功后将会在工程的build目录下生成安装包
build/datax-web-2.1.2.tar.gz
此处下载版本为2.1.2,实际替换为自己的。
3. 部署和配置
1. 解压
tar -zxvf datax-web-2.1.2.tar.gz cd datax-web-2.1.2
2. 执行一键安装脚本
./bin/install.sh
一路按
y
同意即可,或者使用./bin/install.sh --force
3. 数据库初始化
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: dataxweb)
需要提前安装mysql数据库,创建用户,指定数据库,比如dataxweb。
这里有大坑,用户密码不能包含@&这类的特殊字符,否则install不成功或者web端登录不上。为了它重新建了用户,密码只包含数字、字母。mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 1698 (28000): Access denied for user 'root'@'localhost'
安装成功提示如下:
2022-07-31 21:11:26.118 [INFO] (14858) ####### Start To Uncompress Packages ###### 2022-07-31 21:11:26.119 [INFO] (14858) Uncompressing.... 2022-07-31 21:11:26.122 [INFO] (14858) Uncompress package: [datax-admin_2.1.2_1.tar.gz] to modules directory 2022-07-31 21:11:27.940 [INFO] (14858) Uncompress package: [datax-executor_2.1.2_1.tar.gz] to modules directory 2022-07-31 21:11:28.225 [INFO] (14858) ####### Finish To Umcompress Packages ###### Scan modules directory: [/root/datax-web-2.1.2/bin/../modules] to find server under dataxweb 2022-07-31 21:11:28.227 [INFO] (14858) ####### Start To Install Modules ###### 2022-07-31 21:11:28.229 [INFO] (14858) Module servers could be installed: [datax-admin] [datax-executor] 2022-07-31 21:11:28.231 [INFO] (14858) Install module server: [datax-admin] Start to make directory 2022-07-31 21:11:28.242 [INFO] (14894) Start to build directory 2022-07-31 21:11:28.244 [INFO] (14894) Directory or file: [/root/datax-web-2.1.2/modules/datax-admin/bin/../logs] has been exist 2022-07-31 21:11:28.245 [INFO] (14894) Directory or file: [/root/datax-web-2.1.2/modules/datax-admin/bin/../conf] has been exist 2022-07-31 21:11:28.247 [INFO] (14894) Directory or file: [/root/datax-web-2.1.2/modules/datax-admin/bin/../data] has been exist end to make directory Start to initalize database 2022-07-31 21:11:28.252 [INFO] (14894) Scan out mysql command, so begin to initalize the database Do you want to initalize database with sql: [/root/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): dataxweb Please input the db password(default: ): pwd Please input the db name(default: dataxweb)dataxweb mysql: [Warning] Using a password on the command line interface can be insecure. 2022-07-31 21:11:55.151 [INFO] (14858) Install module server: [datax-executor] 2022-07-31 21:11:55.162 [INFO] (14930) Start to build directory 2022-07-31 21:11:55.163 [INFO] (14930) Directory or file: [/root/datax-web-2.1.2/modules/datax-executor/bin/../logs] has been exist 2022-07-31 21:11:55.165 [INFO] (14930) Directory or file: [/root/datax-web-2.1.2/modules/datax-executor/bin/../conf] has been exist 2022-07-31 21:11:55.167 [INFO] (14930) Directory or file: [/root/datax-web-2.1.2/modules/datax-executor/bin/../data] has been exist 2022-07-31 21:11:55.168 [INFO] (14930) Directory or file: [/root/datax-web-2.1.2/modules/datax-executor/bin/../json] has been exist 2022-07-31 21:11:55.170 [INFO] (14858) ####### Finish To Install Modules ######
关于数据库的配置,也可以直接在这里修改,修改之后重启服务即可。
vi ./modules/datax-admin/conf/bootstrap.properties
4. 配置Datax位置
vi ./modules/datax-execute/bin/env.properties ### 执行datax的python脚本地址 PYTHON_PATH=datax/bin/datax.py
5. 启动服务
# 启动服务 ./bin/start-all.sh 2022-07-31 21:32:55.807 [INFO] (16253) Try To Start Modules In Order 2022-07-31 21:32:55.812 [INFO] (16261) ####### Begin To Start Module: [datax-admin] ###### 2022-07-31 21:32:55.817 [INFO] (16269) load environment variables 2022-07-31 21:32:56.016 [INFO] (16269) java 2022-07-31 21:32:56.018 [INFO] (16269) Waiting DATAX-ADMIN to start complete ... 2022-07-31 21:32:56.137 [INFO] (16269) DATAX-ADMIN start success 2022-07-31 21:32:56.142 [INFO] (16476) ####### Begin To Start Module: [datax-executor] ###### 2022-07-31 21:32:56.146 [INFO] (16484) load environment variables 2022-07-31 21:32:56.524 [INFO] (16484) java 2022-07-31 21:32:56.526 [INFO] (16484) Waiting DATAX-EXEXUTOR to start complete ... 2022-07-31 21:32:56.759 [INFO] (16484) DATAX-EXEXUTOR start success
# 结束服务 ./bin/stop-all.sh
运行jps查看状态,如果出现DataXAdminApplication和DataXExecutorApplication进程,这表示项目运行成功
jps 18726 Jps 17575 DataXAdminApplication 17851 DataXExecutorApplication
如果项目启动失败,请检查启动日志:
modules/datax-admin/bin/console.out
或者modules/datax-executor/bin/console.out
4. 访问
浏览器访问
http://ip:9527/index.html
输入用户名 admin 密码 123456 就可以直接访问系统
注意开启防火墙,ufw allow 9542
参考:https://blog.csdn.net/AnameJL/article/details/119760642
更多相关内容 -
datax-web.tar.gz
2022-01-20 16:25:42阿里 数据同步软件,自己...使用步骤:1、 bin目录 ./intall.sh,修改yourpath/datax-web-2.1.2/modules/datax-executor/conf/application.yml 在最后指定你datax.py路径 2、./startup-all.sh 访问 ip:9527/index.html -
datax-web-ui:DataX Web UI
2021-03-20 04:54:10Datax Web UI说明该项目由修改而来构建设置运行npm install [ 慢的话用 npm install --registry https://registry.npm.taobao.org]修改配置找到vue.config.js修改proxy里的属性即可[process.env.VUE_APP_API]: { ... -
数据同步工具datax-web可视化工具
2022-05-09 14:41:43数据同步工具datax-web可视化工具,可实现跨数据库数据同步,项目实际使用实践请大家放心下载。 -
datax-web-2.1.2.tar.gz+datax.tar.gz
2022-05-31 14:15:25datax-web-2.1.2.tar.gz+datax.tar.gz -
javase源码-datax-web:dataxweb。datax中的web配置界面没有集成在一起开源出来,此为web端配置项目
2021-06-04 12:54:34build/libs/datax-web-0.0.1.war 部署环境 系统: CentOS Linux release 7.6.1810 (Core) java: java version "1.8.0_201" Java(TM) SE Runtime Environment (build 1.8.0_201-b09) Java HotSpot(TM) 64-Bit Server... -
datax-web:DataX集成可视化页面,选择数据源即可使用一键生成数据同步任务,支持RDBMS,Hive,HBase,...
2021-03-22 05:28:38数据网 DataX Web是在DataX之上开发的分布式数据同步工具,提供简单易用的操作界面,减少用户使用DataX的学习成本,更改任务配置时间,避免配置过程中出错。用户可以通过页面选择数据源即可创建数据同步任务,支持... -
datax与datax-web安装部署
2022-05-21 15:23:46大数据分析早已成为日常,datax作为国内优秀的开源同步工具,是运维过程中经常会遇到的程序,本文由自己的安装经验总结,希望对后来人有帮助目录
2、将下载好的datax-web-2.1.2.tar.gz放到服务器并解压
第一章:datax概述
DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。
DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。
Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。
Writer: Writer为数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。
Framework:Framework用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。第二章:核心模块介绍
- DataX完成单个数据同步的作业,我们称之为Job,DataX接受到一个Job之后,将启动一个进程来完成整个作业同步过程。DataX Job模块是单个作业的中枢管理节点,承担了数据清理、子任务切分(将单一作业计算转化为多个子Task)、TaskGroup管理等功能。
- DataXJob启动后,会根据不同的源端切分策略,将Job切分成多个小的Task(子任务),以便于并发执行。Task便是DataX作业的最小单元,每一个Task都会负责一部分数据的同步工作。
- 切分多个Task之后,DataX Job会调用Scheduler模块,根据配置的并发数据量,将拆分成的Task重新组合,组装成TaskGroup(任务组)。每一个TaskGroup负责以一定的并发运行完毕分配好的所有Task,默认单个任务组的并发数量为5。
- 每一个Task都由TaskGroup负责启动,Task启动后,会固定启动Reader—>Channel—>Writer的线程来完成任务同步工作。
- DataX作业运行起来之后, Job监控并等待多个TaskGroup模块任务完成,等待所有TaskGroup任务完成后Job成功退出。否则,异常退出,进程退出值非0 DataX调度流程:
- 举例来说,用户提交了一个DataX作业,并且配置了20个并发,目的是将一个100张分表的mysql数据同步到odps里面。 DataX的调度决策思路是:DataXJob根据分库分表切分成了100个Task。 根据20个并发,DataX计算共需要分配4个TaskGroup。 4个TaskGroup平分切分好的100个Task,每一个TaskGroup负责以5个并发共计运行25个Task。
第三章:安装datax
1、datax下载地址
http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz 源码地址: https://github.com/alibaba/DataX
2、将datax.tar.gz放到服务器,并解压
tar -zxvf datax.tar.gz #解压到当前目录 tar -zxvf datax.tar.gz -C /usr/local/ #解压到指导目录-C 后面的参数为想要解压到的目录
3、运行自检脚本
cd bin ./datax.py ../job/job.json
4、报错处理
[main] WARN ConfigParser - 插件[streamreader,streamwriter]加载失败,1s后重试... Exception:Code:[Common-00], Describe:[您提供的配置文件存在错误信息,请检查您的作业配置 .] 如果需要这个错误,请进入plugin/reader 和 plugin/writer,使用ls -al 命令查看目录,删除里面所有以点开头的文件 rm -rf ./._* 再次执行步骤3)中的命令
5、出现下图结果,则表示datax安装成功
第四章 datax-web的安装
1、下载datax-web
下载官方提供的版本tar版本包 https://pan.baidu.com/s/13yoqhGpD00I82K4lOYtQhg 提取码:cpsk
2、将下载好的datax-web-2.1.2.tar.gz放到服务器并解压
tar -zxvf datax-web-2.1.2.tar.gz
3、进入解压后的目录,进行安装
进入解压后的目录,找到bin目录下面的install.sh文件,如果选择交互式的安装,则直接执行 ./bin/install.sh 在交互过程中,如果服务器上存在MySQL则会出现填写MySQL信息的交互语句;如果服务器上没有安装MySQL则不显示。 在交互模式下,对各个模块的package压缩包的解压以及configure配置脚本的调用,都会请求用户确认,可根据提示查看是否安装成功,如果没有安装成功,可以重复尝试; 如果不想使用交互模式,跳过确认过程,则执行以下命令安装 ./bin/install.sh --force
4、修改控制器datax-admin配置文件
首先修改./datax-web-2.1.2/modules/datax-admin/conf/application.yml
cd ./datax-web-master/datax-admin/src/main/resources vi application.yml server: port: 18010 #port: ${server.port} spring: #数据源 datasource: username: datax password: 111111 url: jdbc:mysql://127.0.0.1:19013/datax_web?serverTimezone=Asia/Shanghai&useLegacyDatetimeCode=false&useSSL=false&nullNamePatternMatchesAll=true&useUnicode=true&characterEncoding=UTF-8
再修改./datax-web-2.1.2/modules/datax-admin/bin/env.properties 修改SERVER_PORT=端口,和application.yml中的保持一致即可
5、修改执行器配置文件
首先修改./datax-web-2.1.2/modules/datax-executor/conf/application.yml
执行器配置文件原文:
cd ./datax-web-master/datax-executor/src/main/resources vi application.yml # web port server: #port: ${server.port} port: 18011 # 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:18010 #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: /data/datax/script #jsonpath: ${json.path} pypath: /data/datax/bin/datax.py #pypath: ${python.path}
再修改./datax-web-2.1.2/modules/datax-executor/bin/env.properties ## 保持和datax-admin端口一致 DATAX_ADMIN_PORT=端口号 ## PYTHON脚本执行位置 PYTHON_PATH=/data/datax/bin/datax.py
6、导入datax-web.sql进MySQL
在datax-web.sql文件所在目录执行 mysql -u用户名 -p密码 数据库<./datax_web.sql
如果安装数据库后还没有创建数据库和授权可以使用下面的方法
MySQL8.0及以上版本创建数据库并分配用户授权 1)create database `datax-web` character set utf8mb4; 2)CREATE USER 'datax'@'%' IDENTIFIED BY '111111'; 3)flush privileges; 4)grant all privileges on *.* to datax@'%' with grant option; 5)ALTER USER 'datax'@'%' IDENTIFIED WITH mysql_native_password BY '111111'; 6)flush privileges;
7、启动datax-web
cd ./datax-web-2.1.2/bin ./start-all.sh #同时启动控制器和执行器,如果想单独启动,则使用命令 ./start.sh -m datax-admin 或 ./start.sh -m datax-executor
启动后使用jps命令查看,是否存在DataXAdminApplication和DataXExecutorApplication进程,存在则表示启动成功 如果存在启动失败的情况,可以进入./datax-web-2.1.2/modules/对应的目录中查看log,有详细的报错信息
8、登录界面
部署完成后,在浏览器中输入 http://ip:port/index.html 就可以访问对应的主界面 (ip为datax-admin部署所在服务器ip,port为为datax-admin 指定的运行端口) 输入用户名 admin 密码 123456 就可以直接访问系统
-
Datax及Datax-web 下载使用
2022-08-01 14:44:44datax部署,datax连接mysql8,datax-web部署datax
datax 需要python2.+ 版本,一般centos自带。
如果是python3,会造成报错1、进入目录,下载datax
cd /opt/software wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
2、解压
tar -zxvf datax.tar.gz -C /opt/module
3、设置
vim /opt/module/datax/conf/core.json
将第28行改为 2000000,表示单个channel的大小改为2MB:
4、测试cd /opt/module/datax bin/datax.py job/job.json
但是会报错
2022-08-01 15:07:26.051 [main] WARN ConfigParser - 插件[streamreader,streamwriter]加载失败,1s后重试... Exception:Code:[Common-00], Describe:[您提供的配置文件存在错误信息,请检查您的作业配置 .] - 配置信息错误,您提供的配置文件[/opt/module/datax/plugin/reader/._drdsreader/plugin.json]不存在. 请检查您的配置文件. 2022-08-01 15:07:27.064 [main] ERROR Engine - 经DataX智能分析,该任务最可能的错误原因是: com.alibaba.datax.common.exception.DataXException: Code:[Common-00], Describe:[您提供的配置文件存在错误信息,请检查您的作业配置 .] - 配置信息错误,您提供的配置文件[/opt/module/datax/plugin/reader/._drdsreader/plugin.json]不存在. 请检查您的配置文件. at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:26) at com.alibaba.datax.common.util.Configuration.from(Configuration.java:95) at com.alibaba.datax.core.util.ConfigParser.parseOnePluginConfig(ConfigParser.java:153) at com.alibaba.datax.core.util.ConfigParser.parsePluginConfig(ConfigParser.java:125) at com.alibaba.datax.core.util.ConfigParser.parse(ConfigParser.java:63) at com.alibaba.datax.core.Engine.entry(Engine.java:137) at com.alibaba.datax.core.Engine.main(Engine.java:204)
怎么处理呢,执行以下命令
cd /opt/module/datax/plugin/reader rm -rf ./._* cd /opt/module/datax/plugin/writer rm -rf ./._*
再次启动
cd /opt/module/datax bin/datax.py job/job.json
看到以下界面 代表执行成功
datax连接mysql8
默认的datax连接mysql驱动为5,所以当需要连接mysql8的时候会报错
可以通过下载源码,修改mysql驱动包版本
可以参考:https://blog.csdn.net/Carson073/article/details/126037927
源码下载地址:https://github.com/alibaba/DataX
当然在源码编译过程中会出现各种少包情况,需要自行百度手动下载,也可以联系我提供jar包最省事的就是使用现成编译好的mysql包,替换即可
链接: https://pan.baidu.com/s/1Uj15QriC9rilySKNUkEguw 提取码: q6uc
下载下来之后,删除原本的插件,然后解压到对应目录就可以了datax-web
源码地址:https://github.com/WeiYe-Jing/datax-web
https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/datax-web-deploy.md
下载完成后进行解压tar -zxvf datax-web-2.1.2.tar.gz -C /opt/module
进入解压后的目录,找到bin目录下面的install.sh文件,如果选择交互式的安装,则直接执行
./bin/install.sh
前面选yes,根据提示录入数据库信息,自动初始化数据库脚本
配置datax-web
在项目目录下/modules/datax-execute/bin/env.properties 指定PYTHON_PATH的路径# 进入到安装目录 cd /opt/module/datax/data-web-2.1.2 # 编辑配置 vim modules/datax-executor/bin/env.properties ### 执行datax的python脚本地址 PYTHON_PATH=/opt/datax/datax/bin/datax.py
启动服务
cd /opt/module/datax/data-web-2.1.2 ./bin/start-all.sh
访问(换成自己的ip地址) http://q1:9527/index.html
账号admin 密码123456运行日志
部署完成之后,在modules/对应的项目/data/applogs下(用户也可以自己指定日志,修改application.yml中的logpath地址即可),用户可以根据此日志跟踪项目实际启动情况。
如果执行器启动比admin快,执行器会连接失败,日志报"拒绝连接"的错误,一般是先启动admin,再启动executor,30秒之后会重连,如果成功请忽略这个异常。
-
Datax 及 Datax-web 容器化 docker-compose
2022-04-29 09:41:04Datax 是阿里开源的数据同步工具, Datax-web 是开源的Datax界面操作工具, Datax-web是国内的开发者编写, 非常感谢! Datax下载地址: https://github.com/alibaba/DataXhttps://github.com/alibaba/DataX ...Datax 是阿里开源的数据同步工具, Datax-web 是开源的Datax界面操作工具, Datax-web由国内的开发者编写, 非常感谢!
Datax下载地址:
https://github.com/alibaba/DataX
https://github.com/alibaba/DataX
第一步: 软件包下载及环境准备
1: 可在线或离线下载 Datax.tar.gz 软件包
2:下载 Datax-web 源码。 【重要】, 本地idea 打开后需要修改环境变量, 不能下载打包
好的压缩包, 有坑-_-.
3: 新建datax文件夹
datax, 根文件夹,
datax/admin, 存放 datax-admin
datax/executor 存放 datax-executor, datax.tar.gz
datax/mysql 存放数据库脚本
mkdir -p datax/admin
mkdir -p datax/executor
mkdir -p datax/mysql
目录截图:
4: Datax-web 用idea打开, 修改配置变量的参数名
4.1: 后端校验修改: 将 jobDesc 描述的校验去除给个默认值, 不然后面操作有问题
4.2: 配置变量名修改
如下两个文件中的环境变量修改, 从docker-compose.yml中传入, 不改的话会有问题
1: 改为大写
2: .点改为下划线_
datax-admin application.ynl 修改
修改之后的: 如果有QQ邮箱的也要改,在文件下面一点
datax-executor application.ynl 修改
修改之后的: 注意: ip地址要改为参数名, 从docker-compose中指定
4.3: Datax-web 编译 打包, 记得maven 库地址修改, 改为国内的仓库,不然会很慢
root 下 clean install 进行打包
打完包: 将build下的这个包上传至datax文件下:
上传后将datax-web-2.1.2.tar.gz解压 : tar -zxvf datax-web-2.1.2.tar.gz
目录如图所示:
解压后, 进入目录下,
将admin copy到 datax/admin文件夹中
将executor copy到 datax/executor 文件夹中
4.4: admin目录
Dockerfile 文件: 从Datax-web 官网获取删改的
FROM java:8-jdk
##设置默认语言环境
ENV LANG=C.UTF-8
ENV DATA_WEB=2.1.2
ENV DATAX_VERSION=2.1.2_1
ENV DATAX_NAME=datax-adminADD wait-for-it.sh /etc/init.d/
ADD ${DATAX_NAME}_${DATAX_VERSION}.tar.gz /opt/
RUN chmod +x /etc/init.d/wait-for-it.shENV TimeZone=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone
ARG DATA_PATH=/opt/${DATAX_NAME}/dataARG SERVER_PORT
ARG DB_USERNAME
ARG DB_PASSWORD
ARG DB_HOST
ARG DB_PORT
ARG DB_DATABASE
ARG MAIL_USERNAME
ARG MAIL_PASSWORDENV SERVER_PORT=${SERVER_PORT} \
DB_USERNAME=${DB_USERNAME} \
DB_PASSWORD=${DB_PASSWORD} \
DB_HOST=${DB_HOST} \
DB_PORT=${DB_PORT} \
DB_DATABASE=${DB_DATABASE} \
MAIL_USERNAME=${MAIL_USERNAME} \
MAIL_PASSWORD=${MAIL_PASSWORD} \
DATA_PATH=${DATA_PATH}:. \
CLASSPATH=/opt/${DATAX_NAME}/lib/*:/opt/${DATAX_NAME}/conf:.
EXPOSE ${SERVER_PORT}
WORKDIR /opt
ENTRYPOINT ["java","-Dlogging.config=/opt/datax-admin/conf/logback.xml","com.wugui.datax.admin.DataXAdminApplication"]
wait-for-it.sh 文件: 从Datax-web 官网获取的
#!/usr/bin/env bash
# Use this this script to test if a given TCP host/port are availableWAITFORIT_cmdname=${0##*/}
echoerr() { if [[ $WAITFORIT_QUIET -ne 1 ]]; then echo "$@" 1>&2; fi }
usage()
{
cat << USAGE >&2
Usage:
$WAITFORIT_cmdname host:port [-s] [-t timeout] [-- command args]
-h HOST | --host=HOST Host or IP under test
-p PORT | --port=PORT TCP port under test
Alternatively, you specify the host and port as host:port
-s | --strict Only execute subcommand if the test succeeds
-q | --quiet Don't output any status messages
-t TIMEOUT | --timeout=TIMEOUT
Timeout in seconds, zero for no timeout
-- COMMAND ARGS Execute command with args after the test finishes
USAGE
exit 1
}wait_for()
{
if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
echoerr "$WAITFORIT_cmdname: waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
else
echoerr "$WAITFORIT_cmdname: waiting for $WAITFORIT_HOST:$WAITFORIT_PORT without a timeout"
fi
WAITFORIT_start_ts=$(date +%s)
while :
do
if [[ $WAITFORIT_ISBUSY -eq 1 ]]; then
nc -z $WAITFORIT_HOST $WAITFORIT_PORT
WAITFORIT_result=$?
else
(echo > /dev/tcp/$WAITFORIT_HOST/$WAITFORIT_PORT) >/dev/null 2>&1
WAITFORIT_result=$?
fi
if [[ $WAITFORIT_result -eq 0 ]]; then
WAITFORIT_end_ts=$(date +%s)
echoerr "$WAITFORIT_cmdname: $WAITFORIT_HOST:$WAITFORIT_PORT is available after $((WAITFORIT_end_ts - WAITFORIT_start_ts)) seconds"
break
fi
sleep 1
done
return $WAITFORIT_result
}wait_for_wrapper()
{
# In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692
if [[ $WAITFORIT_QUIET -eq 1 ]]; then
timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --quiet --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
else
timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
fi
WAITFORIT_PID=$!
trap "kill -INT -$WAITFORIT_PID" INT
wait $WAITFORIT_PID
WAITFORIT_RESULT=$?
if [[ $WAITFORIT_RESULT -ne 0 ]]; then
echoerr "$WAITFORIT_cmdname: timeout occurred after waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
fi
return $WAITFORIT_RESULT
}# process arguments
while [[ $# -gt 0 ]]
do
case "$1" in
*:* )
WAITFORIT_hostport=(${1//:/ })
WAITFORIT_HOST=${WAITFORIT_hostport[0]}
WAITFORIT_PORT=${WAITFORIT_hostport[1]}
shift 1
;;
--child)
WAITFORIT_CHILD=1
shift 1
;;
-q | --quiet)
WAITFORIT_QUIET=1
shift 1
;;
-s | --strict)
WAITFORIT_STRICT=1
shift 1
;;
-h)
WAITFORIT_HOST="$2"
if [[ $WAITFORIT_HOST == "" ]]; then break; fi
shift 2
;;
--host=*)
WAITFORIT_HOST="${1#*=}"
shift 1
;;
-p)
WAITFORIT_PORT="$2"
if [[ $WAITFORIT_PORT == "" ]]; then break; fi
shift 2
;;
--port=*)
WAITFORIT_PORT="${1#*=}"
shift 1
;;
-t)
WAITFORIT_TIMEOUT="$2"
if [[ $WAITFORIT_TIMEOUT == "" ]]; then break; fi
shift 2
;;
--timeout=*)
WAITFORIT_TIMEOUT="${1#*=}"
shift 1
;;
--)
shift
WAITFORIT_CLI=("$@")
break
;;
--help)
usage
;;
*)
echoerr "Unknown argument: $1"
usage
;;
esac
doneif [[ "$WAITFORIT_HOST" == "" || "$WAITFORIT_PORT" == "" ]]; then
echoerr "Error: you need to provide a host and port to test."
usage
fiWAITFORIT_TIMEOUT=${WAITFORIT_TIMEOUT:-15}
WAITFORIT_STRICT=${WAITFORIT_STRICT:-0}
WAITFORIT_CHILD=${WAITFORIT_CHILD:-0}
WAITFORIT_QUIET=${WAITFORIT_QUIET:-0}# Check to see if timeout is from busybox?
WAITFORIT_TIMEOUT_PATH=$(type -p timeout)
WAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH)WAITFORIT_BUSYTIMEFLAG=""
if [[ $WAITFORIT_TIMEOUT_PATH =~ "busybox" ]]; then
WAITFORIT_ISBUSY=1
# Check if busybox timeout uses -t flag
# (recent Alpine versions don't support -t anymore)
if timeout &>/dev/stdout | grep -q -e '-t '; then
WAITFORIT_BUSYTIMEFLAG="-t"
fi
else
WAITFORIT_ISBUSY=0
fiif [[ $WAITFORIT_CHILD -gt 0 ]]; then
wait_for
WAITFORIT_RESULT=$?
exit $WAITFORIT_RESULT
else
if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
wait_for_wrapper
WAITFORIT_RESULT=$?
else
wait_for
WAITFORIT_RESULT=$?
fi
fiif [[ $WAITFORIT_CLI != "" ]]; then
if [[ $WAITFORIT_RESULT -ne 0 && $WAITFORIT_STRICT -eq 1 ]]; then
echoerr "$WAITFORIT_cmdname: strict mode, refusing to execute subprocess"
exit $WAITFORIT_RESULT
fi
exec "${WAITFORIT_CLI[@]}"
else
exit $WAITFORIT_RESULT
fi
4.5: executor 目录:
DockerFile : 从Datax-web 官网获取删改的
FROM java:8-jdk
## 设置默认语言环境
ENV LANG=C.UTF-8
ENV DATA_WEB=2.1.2
ENV DATAX_VERSION=2.1.2_1
ENV DATAX_NAME=datax-executor
ADD ${DATAX_NAME}_${DATAX_VERSION}.tar.gz /opt/
ADD wait-for-it.sh /etc/init.d/ADD datax.tar.gz /opt/
RUN chmod +x /etc/init.d/wait-for-it.sh
ENV TimeZone=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone
ARG SERVER_PORT
ARG DATAX_ADMIN_HOST
ARG DATAX_ADMIN_PORT
ARG EXECUTOR_PORT
ARG DATA_PATH
ARG PYTHON_PATH=/opt/datax/bin/datax.py
ARG SERVICE_LOG_PATH=/opt/${DATAX_NAME}/logs
ARG JSON_PATH=/opt/${DATAX_NAME}/json
ENV SERVER_PORT=${SERVER_PORT} \
DATAX_ADMIN_HOST=${DATAX_ADMIN_HOST} \
DATAX_ADMIN_PORT=${DATAX_ADMIN_PORT} \
EXECUTOR_PORT=${EXECUTOR_PORT} \
CLASSPATH=/opt/${DATAX_NAME}/lib/*:/opt/${DATAX_NAME}/conf:. \
JSON_PATH=${JSON_PATH} \
PYTHON_PATH=${PYTHON_PATH} \
DATA_PATH=${DATA_PATH} \
SERVICE_LOG_PATH=${SERVICE_LOG_PATH}
RUN mkdir /opt/${DATAX_NAME}/json /opt/${DATAX_NAME}/python /opt/${DATAX_NAME}/data /opt/${DATAX_NAME}/logs
EXPOSE ${SERVER_PORT}
WORKDIR /opt
ENTRYPOINT exec java com.wugui.datax.executor.DataXExecutorApplication
wait-for-it.sh 文件: 从Datax-web 官网获取的
#!/usr/bin/env bash
# Use this this script to test if a given TCP host/port are availableWAITFORIT_cmdname=${0##*/}
echoerr() { if [[ $WAITFORIT_QUIET -ne 1 ]]; then echo "$@" 1>&2; fi }
usage()
{
cat << USAGE >&2
Usage:
$WAITFORIT_cmdname host:port [-s] [-t timeout] [-- command args]
-h HOST | --host=HOST Host or IP under test
-p PORT | --port=PORT TCP port under test
Alternatively, you specify the host and port as host:port
-s | --strict Only execute subcommand if the test succeeds
-q | --quiet Don't output any status messages
-t TIMEOUT | --timeout=TIMEOUT
Timeout in seconds, zero for no timeout
-- COMMAND ARGS Execute command with args after the test finishes
USAGE
exit 1
}wait_for()
{
if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
echoerr "$WAITFORIT_cmdname: waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
else
echoerr "$WAITFORIT_cmdname: waiting for $WAITFORIT_HOST:$WAITFORIT_PORT without a timeout"
fi
WAITFORIT_start_ts=$(date +%s)
while :
do
if [[ $WAITFORIT_ISBUSY -eq 1 ]]; then
nc -z $WAITFORIT_HOST $WAITFORIT_PORT
WAITFORIT_result=$?
else
(echo > /dev/tcp/$WAITFORIT_HOST/$WAITFORIT_PORT) >/dev/null 2>&1
WAITFORIT_result=$?
fi
if [[ $WAITFORIT_result -eq 0 ]]; then
WAITFORIT_end_ts=$(date +%s)
echoerr "$WAITFORIT_cmdname: $WAITFORIT_HOST:$WAITFORIT_PORT is available after $((WAITFORIT_end_ts - WAITFORIT_start_ts)) seconds"
break
fi
sleep 1
done
return $WAITFORIT_result
}wait_for_wrapper()
{
# In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692
if [[ $WAITFORIT_QUIET -eq 1 ]]; then
timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --quiet --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
else
timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
fi
WAITFORIT_PID=$!
trap "kill -INT -$WAITFORIT_PID" INT
wait $WAITFORIT_PID
WAITFORIT_RESULT=$?
if [[ $WAITFORIT_RESULT -ne 0 ]]; then
echoerr "$WAITFORIT_cmdname: timeout occurred after waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
fi
return $WAITFORIT_RESULT
}# process arguments
while [[ $# -gt 0 ]]
do
case "$1" in
*:* )
WAITFORIT_hostport=(${1//:/ })
WAITFORIT_HOST=${WAITFORIT_hostport[0]}
WAITFORIT_PORT=${WAITFORIT_hostport[1]}
shift 1
;;
--child)
WAITFORIT_CHILD=1
shift 1
;;
-q | --quiet)
WAITFORIT_QUIET=1
shift 1
;;
-s | --strict)
WAITFORIT_STRICT=1
shift 1
;;
-h)
WAITFORIT_HOST="$2"
if [[ $WAITFORIT_HOST == "" ]]; then break; fi
shift 2
;;
--host=*)
WAITFORIT_HOST="${1#*=}"
shift 1
;;
-p)
WAITFORIT_PORT="$2"
if [[ $WAITFORIT_PORT == "" ]]; then break; fi
shift 2
;;
--port=*)
WAITFORIT_PORT="${1#*=}"
shift 1
;;
-t)
WAITFORIT_TIMEOUT="$2"
if [[ $WAITFORIT_TIMEOUT == "" ]]; then break; fi
shift 2
;;
--timeout=*)
WAITFORIT_TIMEOUT="${1#*=}"
shift 1
;;
--)
shift
WAITFORIT_CLI=("$@")
break
;;
--help)
usage
;;
*)
echoerr "Unknown argument: $1"
usage
;;
esac
doneif [[ "$WAITFORIT_HOST" == "" || "$WAITFORIT_PORT" == "" ]]; then
echoerr "Error: you need to provide a host and port to test."
usage
fiWAITFORIT_TIMEOUT=${WAITFORIT_TIMEOUT:-15}
WAITFORIT_STRICT=${WAITFORIT_STRICT:-0}
WAITFORIT_CHILD=${WAITFORIT_CHILD:-0}
WAITFORIT_QUIET=${WAITFORIT_QUIET:-0}# Check to see if timeout is from busybox?
WAITFORIT_TIMEOUT_PATH=$(type -p timeout)
WAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH)WAITFORIT_BUSYTIMEFLAG=""
if [[ $WAITFORIT_TIMEOUT_PATH =~ "busybox" ]]; then
WAITFORIT_ISBUSY=1
# Check if busybox timeout uses -t flag
# (recent Alpine versions don't support -t anymore)
if timeout &>/dev/stdout | grep -q -e '-t '; then
WAITFORIT_BUSYTIMEFLAG="-t"
fi
else
WAITFORIT_ISBUSY=0
fiif [[ $WAITFORIT_CHILD -gt 0 ]]; then
wait_for
WAITFORIT_RESULT=$?
exit $WAITFORIT_RESULT
else
if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
wait_for_wrapper
WAITFORIT_RESULT=$?
else
wait_for
WAITFORIT_RESULT=$?
fi
fiif [[ $WAITFORIT_CLI != "" ]]; then
if [[ $WAITFORIT_RESULT -ne 0 && $WAITFORIT_STRICT -eq 1 ]]; then
echoerr "$WAITFORIT_cmdname: strict mode, refusing to execute subprocess"
exit $WAITFORIT_RESULT
fi
exec "${WAITFORIT_CLI[@]}"
else
exit $WAITFORIT_RESULT
fi
4.6: mysql 目录
1:进入解压的 datax-web-2.1.2文件夹/bin目录下
cd datax-web-2.1.2/bin
2:复制 db文件夹到 mysql文件夹
cp -R db/ /software/datax/mysql/
mysql目录及文件显示:
4.6: docker-compose 文件内容: 从 Datax-web官网获取删改:
version: '3.7'
services:
mysql:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: root95271@2022!
#MYSQL_USER: root
MYSQL_DATABASE: dataxweb
TZ: Asia/Shanghai
character-set-server: utf8mb4
collation-server: utf8mb4_unicode_ci
ports:
- 3307:3306
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/conf:/etc/mysql/conf.d
- ./mysql/logs:/logs
- ./mysql/db:/docker-entrypoint-initdb.d/
container_name: mysqldatax_admin:
#本地镜像,下一步build的镜像
image: datax-admin
restart: always
ports:
- 9527:9527
environment:
SERVER_PORT: 9527
DB_USERNAME: root
DB_PASSWORD: root95271@2022!
DB_HOST: mysql
DB_PORT: 3306
DB_DATABASE: dataxweb
MAIL_USERNAME: email_name
MAIL_PASSWORD: email_password
depends_on:
- mysql
container_name: admin
datax_executor:#本地镜像,下一步build的镜像
image: datax-executor
restart: always
volumes:
- ./datax_web/executor/python:/opt/datax-executor/python
- ./datax_web/executor/json:/opt/datax-executor/json
- ./datax_web/executor/data:/opt/datax-executor/data
ports:
- 8085:8081
environment:
SERVER_PORT: 8081
DATAX_ADMIN_HOST: admin
DATAX_ADMIN_PORT: 9527
EXECUTOR_PORT: 9999
DATA_PATH: ./data
#此处检测 dataxWebAdmin是否成功启动,如果将container_name和container_name.SERVER_PORT改变,请将下面的命令做响应该改变
entrypoint: "/etc/init.d/wait-for-it.sh dataxWebAdmin:9527 -- java com.wugui.datax.executor.DataXExecutorApplication"
depends_on:
- mysql
- datax_admin
container_name: executor4.7:镜像制作及 docker-compose 启动服务及验证
admin 镜像:
1: cd datax/admin
2: docker build -t datax-admin .
成功截图:
executor: 镜像:
1: cd datax/executor
2: docker build -t datax-executor .
成功截图:
docker-compose 启动服务:
在datax目录下执行:
docker-compose up -d
成功截图:
mysql启动确认:
docker logs -f mysql
admin启动确认:
docker logs -f admin
executor 启动确认:
docker logs -f executor
成功截图:
界面访问确认:
至此就完成了, Datax-web步骤:
1: 创建数据源,
2:创建Datax任务模版
3: 构建任务
4: 执行任务
6: 查看执行任务日志。
-
分布式数据同步工具之DataX-Web部署使用
2022-07-25 00:26:55在选定的安装目录,解压安装包 tar -zxvf datax-web-{VERSION}.tar.gz mv datax-web-2.1.2 datax-web 3)执行一键安装脚本 进入解压后的目录,找到bin目录下面的install.sh文件,如果选择交互式的安装,则直接执行 ... -
Datax-web 二次开发环境配置
2021-06-29 14:58:42文章目录0 准备数据库0.1 创建数据库0.2 导入datax-web的sql文件1 下载源码2 idea 打开项目3 配置Maven4 修改datax-admin模块配置4.1 修改pom.xml文件4.2 修改bootstrap.properties文件4.3 修改application.yml文件5... -
DATAX+DATAX-WEB LINUX 部署和使用说明
2021-09-13 16:03:27DATAX 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown... -
本地虚拟机从零搭建部署datax-web
2021-12-30 17:04:41码云项目地址:datax-web: DataX集成可视化页面,选择数据源即可一键生成数据同步任务,支持批量创建RDBMS数据同步任务,集成开源调度系统,支持分布式、增量同步数据、实时查看运行日志、监控执行器资源、KILL运行... -
使用docker部署datax和datax-web
2022-05-12 16:14:564、初始化datax_web_db数据库 #执行以下脚本,完成datax_web_db数据库初始化,满足datax_web服务应用需要 使用datax_web登录,然后切换到datax_web_db,复制datax_web.sql的内执行即可,这里不再详细介绍数据库方面... -
Datax-web 源码阅读记录
2021-07-21 17:44:13Datax-web 源码阅读;搭建Datax-web开发环境可以参考上一篇博客https://blog.csdn.net/qq_39945938/article/details/118335512 -
datax 的clickhouse wirte JAR包,实测datax-web下可用,不报错
2022-01-21 16:08:55datax 的clickhouse wirte JAR包,实测datax-web下可用,不报错,包含 (1)clickhousewriter-0.0.1-SNAPSHOT.jar (2)libs (3)plugin_job_template.json (4)plugin.json 直接拖到/usr/local/datax/plugin/... -
数据集成工具——DataX&DataX-Web
2021-01-27 14:42:52文章目录DataX的安装及使用1、Hive通过外部表与HBase表关联1)、hive建表语句:2)、hbase表3)、直接执行查询语句:2、DataX的安装3、DataX的使用1)、stream2stream①、编写配置文件stream2stream.json②、执行... -
构建datax、datax-web镜像并启动容器服务
2022-05-11 16:20:383、安装mysql数据库和初始化配置,初始化datax_web_db数据库 #执行以下脚本,完成datax_web_db数据库初始化,满足datax_web服务应用需要 使用datax_web登录,然后切换到datax_web_db,复制datax_web.sql的内执行... -
Datax-web入门配置与启动
2022-07-07 08:55:56在idea中启动Datax-web需要先将Datax在本地安装,可以参考这篇文章(DataX在win10中的安装)GitHub - WeiYe-Jing/datax-web: DataX集成可视化页面,选择数据源即可一键生成数据同步任务,支持RDBMS、Hive、HBase、... -
datax3.0在linux下配置并部署datax-web可视化工具教程
2022-04-24 16:49:25datax3.0在linux下配置并部署datax-web可视化工具教程 -
datax-web安装部署
2022-03-15 17:51:17DataX客户端页面datax-web使用 -
XxlJob与Datax-web调度方案源码分析
2021-12-07 15:18:22XxlJob与Datax-Web调度方案源码分析目录前言XxlJob架构设计XxlJob代码实现Admin管理器启动流程作业调度线程池初始化节点注册线程失败作业预警线程完结作业后置处理线程作业日志统计线程作业调度线程Executor执行器... -
CentOS7安装datax、datax-web
2021-06-01 11:42:27一、前置条件 二、安装DataX 1.下载dataX 2.解压缩 3.调试 -
在linux中DATAX和DATAX-WEB安装指引
2022-04-27 10:15:39DATAX-WEB介绍:DataX Web是在DataX之上开发的分布式数据同步工具,提供简单易用的 操作界面,降低用户使用DataX的学习成本,缩短任务配置时间,避免配置过程中出错。用户可通过页面选择数据源即可创建数据同步任务... -
Datax-web版安装(含安装包)
2021-08-17 16:50:44文章目录Datax-web安装环境准备安装Datax安装Data-web启动datax-web软件资源 Datax-web安装 环境准备 MySQL (5.5+) 必选,对应客户端可以选装, Linux服务上若安装mysql的客户端可以通过部署脚本快速初始化数据库 ... -
ETL异构数据源Datax_datax-web安装部署_10
2021-06-23 20:26:14文章目录1. 解压2. 一键安装3. 修改执行器py地址4. 一键启动5. 查看启动日志6. 访问地址+登录7....1. 解压 tar -zxvf datax-web-2.1.2.tar.gz ...# 执行一键安装脚本,系统中需要有mysql...vim datax-web-2.1.2/modules/data -
linux配置并部署datax-web
2022-07-15 18:26:18linux安装data-web -
datax-web-2.1.2.zip
2021-08-14 08:57:03datax-web-2.1.2.zip -
Centos7 安装Datax-web 及简述操作流程
2022-03-14 08:35:48Centos7,JDK1.8, Python 2.7.5,Datax,Datax-web(dev分支) 下载文件 datax datax-web dadax直接解压到服务器后即可,本机目录(/home/datax) 记录一下地址: 需删除一些文件,不然会导致任务执行失败(坑二) rm ...