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.验证:
- 执行一次任务查看是否同步成功
- 任务管理–》任务构建–》步骤1构建reader–>步骤2构建write—>步骤3字段映射–》步骤4构建
- 任务管理—》DataX任务模板—》填写任务信息
- 点击项目管理—》添加—》填写项目名称和描述点击确定即可
- 通过NaviCat连接SQL server并创建表格
- 由于本机已经安装MySQL,所以不需要安装。
- 首先完成这个数据同步之前先安装MySQL并创建库和表并写入数据,然后安装sql-server并创建表
-
-
- 运行自检脚本
-
-
- DataX 目前已经有了比较全面的插件体系,主流的 RDBMS 数据库、NOSQL、大数据计算系统都已经接入。
- 为了解决异构数据源同步问题,DataX 将复杂的网状的同步链路变成了星型数据链路,DataX 作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到 DataX,便能跟已有的数据源做到无缝数据同步。
-