DataX-web的环境准备
-
MySQL (5.5+) 必选,对应客户端可以选装, Linux服务上若安装mysql的客户端可以通过部署脚本快速初始化数据库
-
JDK (1.8.0_xxx) 必选
-
DataX 必选
-
Python (2.x) (支持Python3需要修改替换datax/bin下面的三个python文件,替换文件在doc/datax-web/datax-python3下) 必选,主要用于调度执行底层DataX的启动脚本,默认的方式是以Java子进程方式执行DataX,用户可以选择以Python方式来做自定义的改造
安装部署MySQL
yum -y install https://repo.mysql.com/mysql80-community-release-el7-7.noarch.rpm
#修改yum文件
vim mysql-community.repo
# Enable to use MySQL 5.7
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
这个enable后面参数修改为1,其他的源全部修改为0。
#安装MySQL
yum -y install mysql-community-server
#启动mysql
systemctl start mysqld.service
systemctl enable mysqld.service
#查询MySQL的密码
grep password /var/log/mysqld.log
#登录MySQL并修改密码和密码策略
mysql -uroot -p
alter user 'root'@'localhost' identified by '1234Qaz.'
set global validate_password_policy=0; #设置密码策略为LOW
set global validate_password_length=1; #设置密码长度为1
#修改MySQL配置文件
vim /etc/my.cnf
...
#添加以下内容
validate_password_policy=0
validate_password_length=1
#重启mysql
systemctl restart mysqld
#修改密码
mysql -uroot -p
alter user 'root'@'localhost' identified by '1234';
安装JDK
yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
DataX安装部署
1. DataX介绍
1.1 什么是 DataX
-
DataX 是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源之间稳定高效的数据同步功能。
1.2. DataX 的设计
- 为了解决异构数据源同步问题,DataX 将复杂的网状的同步链路变成了星型数据链路,DataX 作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到 DataX,便能跟已有的数据源做到无缝数据同步。
1.3. 支持的数据源
- DataX 目前已经有了比较全面的插件体系,主流的 RDBMS 数据库、NOSQL、大数据计算系统都已经接入。
类型 | 数据源 | 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 | √ | √ |
1.4. 框架设计
-
Reader:数据采集模块,负责采集数据源的数据,将数据发送给Framework。
-
Writer:数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。
-
Framework:用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。
1.5. 运行原理
-
Job:单个作业的管理节点,负责数据清理、子任务划分、TaskGroup监控管理。
-
Task:由Job切分而来,是DataX作业的最小单元,每个Task负责一部分数据的同步工作。
-
Schedule:将Task组成TaskGroup,单个TaskGroup的并发数量为5。
-
TaskGroup:负责启动Task。
-
**举例:**用户提交了一个 DataX 作业,并且配置了 20 个并发,目的是将一个 100 张分表的 mysql 数据同步到 odps 里面。 DataX 的调度决策思路是:
- DataXJob 根据分库分表切分成了 100 个 Task。
- 根据 20 个并发,DataX 计算共需要分配 4 个 TaskGroup。
- 4 个 TaskGroup 平分切分好的 100 个 Task,每一个 TaskGroup 负责以 5 个并发共计运行 25 个 Task。
1.6. 与 Sqoop 的对比
2. DataX安装部署
2.1. 前置要求
- Linux
- JDK(1.8 以上,推荐 1.8)
- Python(推荐 Python2.6.X)
2.2. 安装
- 将下载好的
datax.tar.gz
上传到 服务器上/usr/local/soft/
- 解压
datax.tar.gz
到/usr/local/soft/
tar -xf datax.tar.gz
- 运行自检脚本
cd /usr/local/soft/datax/bin/
python datax.py /usr/local/soft/datax/job/job.json
DataX-web 安装部署
- 源码包
- 下载官方提供的版本tar版本包 提取码:cpsk
1. datax-web介绍
1.1. datax-web是什么?
-
DataX Web是在DataX之上开发的分布式数据同步工具,提供简单易用的 操作界面,降低用户使用DataX的学习成本,缩短任务配置时间,避免配置过程中出错。用户可通过页面选择数据源即可创建数据同步任务,支持RDBMS、Hive、HBase、ClickHouse、MongoDB等数据源,RDBMS数据源可批量创建数据同步任务,支持实时查看数据同步进度及日志并提供终止同步功能,集成并二次开发xxl-job可根据时间、自增主键增量同步数据。
-
任务"执行器"支持集群部署,支持执行器多节点路由策略选择,支持超时控制、失败重试、失败告警、任务依赖,执行器CPU.内存.负载的监控等等。后续还将提供更多的数据源支持、数据转换UDF、表结构同步、数据同步血缘等更为复杂的业务场景。
1.2. datax-web架构
1. DataX-web的二进制包下载
#把下载的datax-web二进制tar包上传至/usr/local/soft
cd /usr/local/soft/
#解压
tar -xf datax-web-2.1.2.tar.gz
2. 执行一键安装脚本
cd datax-web-2.1.2/
#执行一键安装脚本
./bin/install.sh
2023-10-14 23:06:55.058 [INFO] (9341) Creating directory: [/usr/local/soft/datax-web-2.1.2/bin/../modules].
2023-10-14 23:06:55.062 [INFO] (9341) ####### Start To Uncompress Packages ######
2023-10-14 23:06:55.064 [INFO] (9341) Uncompressing....
Do you want to decompress this package: [datax-admin_2.1.2_1.tar.gz]? (Y/N)y #你想解压缩这个包吗(datax-admin_2.1.2_1.tar.gz)这里选择y解压
2023-10-14 23:06:57.422 [INFO] (9341) Uncompress package: [datax-admin_2.1.2_1.tar.gz] to modules directory
Do you want to decompress this package: [datax-executor_2.1.2_1.tar.gz]? (Y/N)y #你想解压缩这个包吗(datax-executor_2.1.2_1.tar.gz)这里选择y解压
2023-10-14 23:07:00.938 [INFO] (9341) Uncompress package: [datax-executor_2.1.2_1.tar.gz] to modules directory
2023-10-14 23:07:01.162 [INFO] (9341) ####### Finish To Umcompress Packages ######
Scan modules directory: [/usr/local/soft/datax-web-2.1.2/bin/../modules] to find server under dataxweb
2023-10-14 23:07:01.166 [INFO] (9341) ####### Start To Install Modules ######
2023-10-14 23:07:01.168 [INFO] (9341) Module servers could be installed:
[datax-admin] [datax-executor]
Do you want to confiugre and install [datax-admin]? (Y/N)y #是否要确认并安装datax-admin
2023-10-14 23:07:03.516 [INFO] (9341) Install module server: [datax-admin]
Start to make directory
2023-10-14 23:07:03.532 [INFO] (9381) Start to build directory
2023-10-14 23:07:03.536 [INFO] (9381) Creating directory: [/usr/local/soft/datax-web-2.1.2/modules/datax-admin/bin/../logs].
2023-10-14 23:07:03.570 [INFO] (9381) Directory or file: [/usr/local/soft/datax-web-2.1.2/modules/datax-admin/bin/../conf] has been exist
2023-10-14 23:07:03.572 [INFO] (9381) Creating directory: [/usr/local/soft/datax-web-2.1.2/modules/datax-admin/bin/../data].
end to make directory
Start to initalize database
2023-10-14 23:07:03.598 [INFO] (9381) Scan out mysql command, so begin to initalize the database
Do you want to initalize database with sql: [/usr/local/soft/datax-web-2.1.2/bin/db/datax_web.sql]? (Y/N)y 是否要使用sql初始化数据库,这里选择y
Please input the db host(default: 127.0.0.1): #请输入数据库主机,这里回车,选择127.0.0.1
Please input the db port(default: 3306): #请输入数据库端口,这里回车,选择3306
Please input the db username(default: root): #请输入数据库用户名,这里回车,选择root
Please input the db password(default: ): 1234 #请输入数据库密码,这里输入1234
Please input the db name(default: dataxweb)
mysql: [Warning] Using a password on the command line interface can be insecure.
Do you want to confiugre and install [datax-executor]? (Y/N)y #是否要确认并安装datax-executor,这里选择安装
2023-10-14 23:07:27.697 [INFO] (9341) Install module server: [datax-executor]
2023-10-14 23:07:27.713 [INFO] (9425) Start to build directory
2023-10-14 23:07:27.715 [INFO] (9425) Creating directory: [/usr/local/soft/datax-web-2.1.2/modules/datax-executor/bin/../logs].
2023-10-14 23:07:27.739 [INFO] (9425) Directory or file: [/usr/local/soft/datax-web-2.1.2/modules/datax-executor/bin/../conf] has been exist
2023-10-14 23:07:27.741 [INFO] (9425) Creating directory: [/usr/local/soft/datax-web-2.1.2/modules/datax-executor/bin/../data].
2023-10-14 23:07:27.764 [INFO] (9425) Creating directory: [/usr/local/soft/datax-web-2.1.2/modules/datax-executor/bin/../json].
2023-10-14 23:07:27.789 [INFO] (9341) ####### Finish To Install Modules ######
3. 修改配置文件
#/modules/datax-execute/bin/env.properties 指定PYTHON_PATH的路径
vim modules/datax-executor/bin/env.properties
...
#修改如下:
DATAX_ADMIN_PORT=9527 #保持和datax-admin端口一致
PYTHON_PATH=/usr/local/soft/datax/bin/datax.py #指定datax的路径
...
4. 启动服务
#一键启动所有服务
/usr/local/soft/datax-web-2.1.2/bin/start-all.sh
2023-10-14 23:26:40.112 [INFO] (10448) Try To Start Modules In Order
2023-10-14 23:26:40.118 [INFO] (10456) ####### Begin To Start Module: [datax-admin] ######
2023-10-14 23:26:40.124 [INFO] (10464) load environment variables
2023-10-14 23:26:40.420 [INFO] (10464) DATAX-ADMIN has been started in process
2023-10-14 23:26:40.427 [INFO] (10625) ####### Begin To Start Module: [datax-executor] ######
2023-10-14 23:26:40.433 [INFO] (10633) load environment variables
2023-10-14 23:26:40.710 [INFO] (10633) java
2023-10-14 23:26:40.713 [INFO] (10633) Waiting DATAX-EXEXUTOR to start complete ...
2023-10-14 23:26:40.853 [INFO] (10633) DATAX-EXEXUTOR start success
#一键停掉所有服务
/usr/local/soft/datax-web-2.1.2/bin/stop-all.sh
5. 测试datax-web是否可以通过浏览器访问
-
在浏览器中输入http://ip:9527/index.html就可以访问对应的主界面(ip为datax-admin部署所在服务器ip,port为为datax-admin 指定的运行端口)
-
输入用户名 admin 密码 123456 就可以直接访问系统
mysql数据同步到sql-server
- 首先完成这个数据同步之前先安装MySQL并创建库和表并写入数据,然后安装sql-server并创建表
1. 在MySQL上创建数据库,并写入数据
- 由于本机已经安装MySQL,所以不需要安装。
create database db1 default charset=utf8;
use db1;
#创建表格
create table stuinfo(
-> id int(10),
-> name char(4) not null,
-> age int(4) not null,
-> sex char(10),
-> likes char(20) );
#导入数据
mysql> insert into stuinfo values('001','bob','25','boy','run'),('002','andy','28','boy','read a book');
#查看表格信息
mysql> select * from stuinfo;
+------+------+-----+------+-------------+
| id | name | age | sex | likes |
+------+------+-----+------+-------------+
| 1 | bob | 25 | boy | run |
| 2 | andy | 28 | boy | read a book |
+------+------+-----+------+-------------+
2 rows in set (0.00 sec)
2. 安装sqlserver并创建表格
#下载yum源
curl https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo > /etc/yum.repos.d/mssql-server.repo
#安装
yum install -y mssql-server
#程序包安装完成后,请运行 mssql-conf setup 命令选择安装版本并按提示进行安装,具体操作如下:
/opt/mssql/bin/mssql-conf setup
#回车后---》选择版本号---》选择是否同意许可条款--》创建sa的密码--》回车
#配置完成后,请验证服务是否正在运行
systemctl status mssql-server
- 通过NaviCat连接SQL server并创建表格
3. 创建项目
- 点击项目管理—》添加—》填写项目名称和描述点击确定即可
4. 添加数据源
- 点击数据源管理-----》添加—》填写数据源信息
- 这里需要添加两个数据源分别是MySQL和SQL server的
5. 创建任务模板
- 任务管理—》DataX任务模板—》填写任务信息
6. 创建任务构建
- 任务管理–》任务构建–》步骤1构建reader–>步骤2构建write—>步骤3字段映射–》步骤4构建
7.验证:
- 执行一次任务查看是否同步成功