网站 开发 工具,长沙网站优化方式,慕课网站开发,自建站公司文章目录 1、简介1.1 DataX简介1.2 DataX功能1.3 支持的数据通道 2、DataX安装配置2.1 DataX2.2 Java2.3 Python 3、DataX Web安装配置3.1 mysql3.2 DataX Web3.2.1 简介3.2.2 架构图3.2.3 依赖环境3.2.4 安装 4、入门使用4.1 DataX自带打印示例测试4.2 DataX生成任务模板文件4… 文章目录 1、简介1.1 DataX简介1.2 DataX功能1.3 支持的数据通道 2、DataX安装配置2.1 DataX2.2 Java2.3 Python 3、DataX Web安装配置3.1 mysql3.2 DataX Web3.2.1 简介3.2.2 架构图3.2.3 依赖环境3.2.4 安装 4、入门使用4.1 DataX自带打印示例测试4.2 DataX生成任务模板文件4.3 DataX-Web创建任务 5、FAQ5.1 DataX-Web连接不上MySQL5.2 在有总bps限速条件下单个channel的bps值不能为空也不能为非正数?5.3 触发任务报错Cannot run program python: error2, No such file or directory5.4 基于代码重新打包DataX 结语 1、简介 DataX是阿里云DataWorks数据集成的开源版本。下载即可用支持linux和windows只需要短短几步骤就可以完成数据的传输。 官网地址 https://github.com/alibaba/DataX 1.1 DataX简介
DataX 是阿里云 DataWorks数据集成 的开源版本在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。
1.2 DataX功能
DataX本身作为数据同步框架将不同数据源的同步抽象为从源头数据源读取数据的Reader插件以及向目标端写入数据的Writer插件理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。 DataX本身作为离线数据同步框架采用Framework plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件纳入到整个同步框架中。
ReaderReader为数据采集模块负责采集数据源的数据将数据发送给Framework。Writer Writer为数据写入模块负责不断向Framework取数据并将数据写入到目的端。FrameworkFramework用于连接reader和writer作为两者的数据传输通道并处理缓冲流控并发数据转换等核心技术问题。
1.3 支持的数据通道
DataX目前支持数据如下
类型数据源Reader(读)Writer(写)文档RDBMS 关系型数据库MySQL√√读 、写Oracle√√读 、写OceanBase√√读 、写SQLServer√√读 、写PostgreSQL√√读 、写DRDS√√读 、写Kingbase√√读 、写通用RDBMS(支持所有关系型数据库)√√读 、写阿里云数仓数据存储ODPS√√读 、写ADB√写ADS√写OSS√√读 、写OCS√写Hologres√写AnalyticDB For PostgreSQL√写阿里云中间件datahub√√读 、写SLS√√读 、写图数据库阿里云 GDB√√读 、写Neo4j√写NoSQL数据存储OTS√√读 、写Hbase0.94√√读 、写Hbase1.1√√读 、写Phoenix4.x√√读 、写Phoenix5.x√√读 、写MongoDB√√读 、写Cassandra√√读 、写数仓数据存储StarRocks√√读 、写ApacheDoris√写ClickHouse√√读 、写Databend√写Hive√√读 、写kudu√写selectdb√写无结构化数据存储TxtFile√√读 、写FTP√√读 、写HDFS√√读 、写Elasticsearch√写时间序列数据库OpenTSDB√读TSDB√√读 、写TDengine√√读 、写
2、DataX安装配置
https://github.com/alibaba/DataX/blob/master/userGuid.md
2.1 DataX
下载DataX的源代码进行编译
wget https://codeload.github.com/alibaba/DataX/zip/master
git clone gitgithub.com:alibaba/DataX.git或者
下载DataX的二进制安装包本文采用的方法
# wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz解压如下
tar -zxvf datax.tar.gz查看文件夹/home/tomcat如下 查看文件夹/home/tomcat/datax/bin如下 查看文件夹/home/tomcat/datax/job如下
2.2 Java
输入命令检查java是否已安装。
java -version说明java没有安装。 安装java环境输入如下代码如下
apt-get install openjdk-11-jre-headless openjdk-11-jdk-headless2.3 Python
输入命令检查python是否已安装。
python -vpython3 -v3、DataX Web安装配置
3.1 mysql
下载mysql数据库的安装包
mkdir mysql
cd mysql
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar解压mysql数据库的安装包
tar xvf mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar依次安装如下文件 libmysqlclient20_5.7.31-1ubuntu18.04_amd64.deblibmysqlclient-dev_5.7.31-1ubuntu18.04_amd64.deblibmysqld-dev_5.7.31-1ubuntu18.04_amd64.debmysql-client_5.7.31-1ubuntu18.04_amd64.debmysql-common_5.7.31-1ubuntu18.04_amd64.debmysql-community-client_5.7.31-1ubuntu18.04_amd64.debmysql-community-server_5.7.31-1ubuntu18.04_amd64.debmysql-community-source_5.7.31-1ubuntu18.04_amd64.debmysql-server_5.7.31-1ubuntu18.04_amd64.deb#mysql-testsuite_5.7.31-1ubuntu18.04_amd64.deb#mysql-community-test_5.7.31-1ubuntu18.04_amd64.deb比如命令如下
sudo apt-get install ./mysql-server_5.7.31-1ubuntu18.04_amd64.deb测试是否安装成功如下
mysql -V安装完成后查看mysql服务
netstat -tap | grep mysql修改 root 密码和 host
mysql
use mysql
update user set host % where user root
SET PASSWORD FOR root% PASSWORD(XXXXXXXX);
FLUSH PRIVILEGES;
select user,host from user;
FLUSH PRIVILEGES;测试mysql是否能登录成功。 查看mysql数据库情况
show databases;use dataweb;
show tables;执行如下操作使得远程可以连接mysql数据库。
# 查看监听
netstat -an |grep 3306
# 前监听的是本地回环地址tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
# 远程客户端无法访问# 修改MySQL的本地监听地址
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf修改bind-address 的值为 bind-address 0.0.0.0保存退出。
也可以修改为本机ip例如bind-address 192.168.111.10# 重启mysql数据库
sudo service mysql restart# 在远程客户端机器上测试下网络telnet成功说明网络没问题
telnet 192.168.111.10 3306# 注意阿里云服务器有端口限制需要去配置下端口访问规则开放3306端口
网址[https://homenew.console.aliyun.com/](https://homenew.console.aliyun.com/) 数据库的基本操作命令:
# 直接登陆mysql
mysql -u用户名 -p密码 数据库名
# 例如
mysql -uroot -p123456 mysql# 先登陆后面再输入密码和选择数据库
mysql -u root -p
Enter password: “root用户密码”
mysql use mysql # 选择要操作的数据库# 切换数据库
use 数据库名;# 查看所有数据库
show databases; # 查看登陆数据库中所有的表
show tables; # 查看数据表结构
desc 表名;# 查看登陆用户名
select user(); # 查看登陆数据库库名
select database();# 查看版本
select version();# 显示当前时间
select now();# 查看所有用户的 用户名、可登陆主机、身份验证插件、密码
select user,host,plugin,authentication_string from user;# 查看当前登录用户权限
show grants;# 查看任意用户权限(后面说权限的具体含义)
show grants for rootlocalhost;数据库的备份及恢复
# 备份所有数据库
mysqldump -uroot -p --all-databases all.db# 备份指定数据库
mysqldump -uroot -p pydb test1.db# 备份指定数据库的某些表
mysqldump -uroot -p pydb 表名1 表名2 表名n test2.db# 备份指定数据库排除某些表(排除表1 和 表2)
mysqldump -uroot -p pydb --ignore-tablepydb.表1 --ignore-tablepydb.表2 test3.db# 创建test数据库
create database test charsetutf8; # 恢复备份数据导入的数据库必须存在
mysql -u root -p test test1.db
卸载mysql
# 卸载mysql
1.sudo apt-get autoremove mysql* --purge
2.sudo apt-get remove mysql-server
3.sudo apt-get remove mysql-common# 清理残留数据
sudo dpkg -l |grep mysql|awk {print $2} |sudo xargs dpkg -P
sudo rm -rf /etc/mysql/
sudo rm -rf /var/lib/mysql# 检查是否删除完毕
whereis mysql
sudo find / -name mysql
3.2 DataX Web
https://github.com/WeiYe-Jing/datax-web
3.2.1 简介
DataX集成可视化页面选择数据源即可一键生成数据同步任务支持RDBMS、Hive、HBase、ClickHouse、MongoDB等数据源批量创建RDBMS数据同步任务集成开源调度系统支持分布式、增量同步数据、实时查看运行日志、监控执行器资源、KILL运行进程、数据源信息加密等。
3.2.2 架构图 3.2.3 依赖环境
Language: Java 8jdk版本建议1.8.201以上Python2.7(支持Python3需要修改替换datax/bin下面的三个python文件替换文件在doc/datax-web/datax-python3下)Environment: MacOS, Windows,LinuxDatabase: Mysql5.7
3.2.4 安装
https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/datax-web-deploy.md
https://pan.baidu.com/s/13yoqhGpD00I82K4lOYtQhg
提取码cpsk1解压安装包 在选定的安装目录解压安装包
tar -zxvf datax-web-{VERSION}.tar.gz2执行一键安装脚本 进入解压后的目录找到bin目录下面的install.sh文件如果选择交互式的安装则直接执行
./bin/install.sh3数据库初始化 如果你的服务上安装有mysql命令在执行安装脚本的过程中则会出现以下提醒
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: exchangis)配置 在项目目录下/modules/datax-execute/bin/env.properties 指定PYTHON_PATH的路径
vi ./modules/{module_name}/bin/env.properties### 执行datax的python脚本地址
PYTHON_PATH### 保持和datax-admin服务的端口一致默认是9527如果没改datax-admin的端口可以忽略
DATAX_ADMIN_PORT此文件中包括一些默认配置参数例如executor.port,json.path,data.path等具体请查看文件。
检查文件bootstrap.properties
cd ./datax-web
vi ./modules/datax-admin/conf/bootstrap.propertiesdatax-web-server分为2模块admin 、executor。 检查admin配置修改
cd ./datax-web
sudo vi ./modules/datax-admin/bin/env.properties
# 修改server port、邮件、java_home等信息检查executor 配置修改 cd ./datax-web
sudo vi ./modules/datax-executor/bin/env.properties5启动服务 运行bin目录下start-all.sh (或者分别启动admin、executor)。 一键启动所有服务
./bin/start-all.sh一键取消所有服务
./bin/stop-all.sh汇总命令如下
./bin/start-all.sh # 启动
./bin/stop-all.sh # 停止# 启动后jps可以看到admin和executor进程
jps6查看服务 在Linux环境下使用JPS命令查看是否出现DataXAdminApplication和DataXExecutorApplication进程如果存在这表示项目运行成功 如果项目启动失败请检查启动日志modules/datax-admin/bin/console.out或者modules/datax-executor/bin/console.out 7运行 部署完成后在浏览器中输入 http://ip:port/index.html 就可以访问对应的主界面ip为datax-admin部署所在服务器ip,port为为datax-admin 指定的运行端口
http://192.168.1.123:9527/index.html输入用户名 admin 密码 123456 就可以直接访问系统 4、入门使用
4.1 DataX自带打印示例测试
输入DataX的测试命令如下
python3 datax.py ../job/job.json命令行结果输出 初步测试成功。
4.2 DataX生成任务模板文件
通过命令生成datax任务的模板json文件。
cd ./datax/bin/
python datax.py -r mysqlreader -w mysqlwriter mysql2mysql.json查看文件mysql2mysql.json如下
cat mysql2mysql.json准备数据表如下 t_user: t_user2:
根据各自需求按照模板修改文件mysql2mysql.json
{job: {content: [{reader: {name:mysqlreader,parameter: {column: [user_id],connection: [{jdbcUrl: [jdbc:mysql://192.168.36.130:3306/test?useSSLfalse],table: [t_user]}],password:123456,username:root}},writer: {name:mysqlwriter,parameter: {column: [user_id],connection: [{jdbcUrl:jdbc:mysql://192.168.36.130:3306/test?useSSLfalse,table: [t_user2]}],password:123456,username:root,writeMode:insert}}}],setting: {speed: {channel:1}}}
}①select中字段个数和writer节点上“column”的个数需保持一致如果能确保 select中的字段与目标表保持一致可在writer节点的配置上去掉“column”相关配置。 ②writer节点的jdbcUrl不可以同reader节点那样用“[]”括起来。
启动datax同步任务
python ./datax.py ./mysql2mysql.json修改mysql2mysql.json中的字段数据如下
column: [user_id, name],再次执行命令如下
python ./datax.py ./mysql2mysql.json数据表结果更新如下
4.3 DataX-Web创建任务 创建项目 创建执行器 创建数据源 创建任务模板 此步骤是主要是为了后边构建任务的时候为任务指定执行器。 创建任务 生成任务json文件 管理任务执行任务 查看日志
5、FAQ
5.1 DataX-Web连接不上MySQL 问题 Code:[MYSQLErrCode-02], Description:[数据库服务的IP地址或者Port错误请检查填写的IP地址和Port或者联系DBA确认IP地址和Port是否正确。如果是同步中心用户请联系DBA确认idb上录入的IP和PORT信息和数据库的当前实际信息是一致的]. - 具体错误信息为com.mysql.jdbc.excep 回答 不建议在没有服务器身份验证的情况下建立SSL连接根据MySQL 5.5.45、5.6.26和5.7.6的要求如果没有设置显式选项则必须默认建立SSL连接。为了符合不使用SSL的现有应用程序verifyServerCertificate属性被设置为“false”。您需要通过设置useSSLfalse显式禁用SSL或者设置useSSLtrue并为服务器证书验证提供信任存储。
很简单在连接数据库的url后面加上参数即可例如
jdbc:mysql://localhost:3306/testdb?useSSLfalse使用上述标红的URL即可解决该警告标红参数前面为你数据库连接URL如果有多个参数记得用连接例如
jdbc:mysql://localhost:3306/testdb?characterEncodingutf-8useSSLfalse5.2 在有总bps限速条件下单个channel的bps值不能为空也不能为非正数?
解决办法 修改文件datax/conf/core.json:
core: {dataXServer: {address: http://localhost:7001/api,timeout: 10000,reportDataxLog: false,reportPerfLog: false},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将单个channel的大小改为2MB即可。
5.3 触发任务报错Cannot run program “python”: error2, No such file or directory
解决办法 因为Ubuntu自带的python没有/usr/bin/python该目录data-web源码中默认调用/usr/bin/python解决方法可以搭建软连接
ln -s /usr/bin/python3 /usr/bin/python或者若安装了python2也可以
ln -s /usr/bin/python2 /usr/bin/python5.4 基于代码重新打包DataX
代码下载地址 https://github.com/taosdata/DataX
datax和datax web可以使用maven进行编译源码和打包因此需要先安装maven。 在Linux系统中可以使用以下命令安装maven
sudo apt-get install mavenmvn -v进入datax源代码目录执行以下命令进行编译
mvn clean package assembly:assembly -Dmaven.test.skiptrue 其中-Dmaven.test.skiptrue表示跳过测试。 1找不到依赖包: [ERROR] Failed to execute goal on project hdfsreader: Could not resolve dependencies for project com.alibaba.datax:hdfsreader:jar:0.0.1-SNAPSHOT: Could not find artifact org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde in nexus-aliyun (https://maven.aliyun.com/repository/central) - [Help 1]
解决方法从提示上看是hdfsreader的包缺失相应的hdfswriter也应该是不行的。因为我用不到这两个组件于是在pom.xml中注释掉。 2问题提示disk空间too little实际空间有很大 解决方法实际是/tmp目录小于默认的1G设置小一点就好了。配置文件minimalTmpDirGB设置小一点就正常了。 logdir datadir tmpdir 都有自己的min value在/etc/taos/taos.cfg指定。 然后重启一下涛思服务。
启动服务进程 systemctl start taosd
停止服务进程 systemctl stop taosd
重启服务进程 systemctl restart taosd
查看服务状态 systemctl status taosd编译完成后会在target目录下生成datax.tar.gz文件。 将datax.tar.gz文件解压到任意目录例如/home/datax
tar -zxvf datax.tar.gz -C /home/进入datax目录编辑job目录下的job.json文件配置datax的运行参数。
安装maven并切换阿里镜像源。不然编译的时候会找不到第三方依赖项。 修改为国内阿里镜像源找到/usr/share/maven/conf/settings.xml文件打开并修改以下
mirroridaliyunmaven/idmirrorOf*/mirrorOfname阿里云公共仓库/nameurlhttps://maven.aliyun.com/repository/public/url
/mirrorsettings.xml文件可能会显示只读。需要修改下权限再保存它。
sudo chmod 777 /usr/share/maven/conf/settings.xml打包成功后的DataX包位于 {DataX_source_code_home}/target/datax/datax/ 。
结语
如果您觉得该方法或代码有一点点用处可以给作者点个赞或打赏杯咖啡╮(▽)╭ 如果您感觉方法或代码不咋地//(ㄒoㄒ)//就在评论处留言作者继续改进o_O??? 如果您需要相关功能的代码定制化开发可以留言私信作者(✿◡‿◡) 感谢各位大佬童鞋们的支持( ´ ▽´ ) ( ´ ▽´)っ