DataX-web安装部署和使用

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 的调度决策思路是:

              1. DataXJob 根据分库分表切分成了 100 个 Task。
              2. 根据 20 个并发,DataX 计算共需要分配 4 个 TaskGroup。
              3. 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.验证:

                                          • 执行一次任务查看是否同步成功