数据同步工具—DataX—Web部署使用

以前了解datax,感觉对易用性不大好,目前发现已经图形配置工具。简单整理一下。

DataX—Web 部署使用

Datax 的使用过程中,我们会发现,不管是利用 java 调用以及 python 命令启动的方式,我们都无法进行任务的管理,并且每次执行任务前,我们 都需要编辑 Json 配置文件,这是比较繁琐的,随着业务的增加,配置文件 不方便管理和迁移并且每次执行都需要记录命令。 同时目前 DataX 只支持 单机版,无法调用远程的 datax,并且多节点之间的协作不能控制。

因此,开发一款支持远程分布式调用 Datax 的可视化管理工具非常有必要,Datax-Web 就是这样的一款工具。

DataX Web是在DataX之上开发的分布式数据同步工具,提供简单易用的 操作界面,降低用户使用DataX的学习成本,缩短任务配置时间,避免配置过程中出错。用户可通过页面选择数据源即可创建数据同步任务,支持RDBMS、Hive、HBase、ClickHouse、MongoDB等数据源,RDBMS数据源可批量创建数据同步任务,支持实时查看数据同步进度及日志并提供终止同步功能,集成并二次开发xxl-job可根据时间、自增主键增量同步数据。

任务”执行器”支持集群部署,支持执行器多节点路由策略选择,支持超时控制、失败重试、失败告警、任务依赖,执行器CPU.内存.负载的监控等等。后续还将提供更多的数据源支持、数据转换UDF、表结构同步、数据同步血缘等更为复杂的业务场景。

DataX—Web 架构

DataX—Web 整体的架构如下

数据同步工具—DataX—Web部署使用

安装部署

环境要求

  1. MySQL (5.5+) 必选,对应客户端可以选装, Linux服务上若安装mysql的客户端可以通过部署脚本快速初始化数据库
  2. JDK (1.8.0_xxx) 必选
  3. Maven (3.6.1+) 必选
  4. DataX 必选
  5. Python (2.x) (支持Python3需要修改替换datax/bin下面的三个python文件,替换文件在doc/datax-web/datax-python3下) 必选,主要用于调度执行底层DataX的启动脚本,默认的方式是以Java子进程方式执行DataX,用户可以选择以Python方式来做自定义的改造

获取安装包

1 下载官方提供的版本tar版本包

​ ​点击下载​​ 提取码:cpsk

2 编译打包(官方提供的tar包跳过)

直接从Git上面获得源代码

数据同步工具—DataX—Web部署使用

在项目的根目录下执行如下命令


mvn clean install

执行成功的话可以看到下面的输出

数据同步工具—DataX—Web部署使用

注意如果你的java版本太高可能会有下面的报错,所以建议使用1.8

数据同步工具—DataX—Web部署使用


[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project datax-core: Compilation failure: Compilation failure:

[ERROR] /Users/kingcall/workspace/idea/datax-web/datax-core/src/main/java/com/wugui/datatx/core/glue/impl/SpringGlueFactory.java:[11,24] 程序包javax.annotation不存在

[ERROR] /Users/kingcall/workspace/idea/datax-web/datax-core/src/main/java/com/wugui/datatx/core/glue/impl/SpringGlueFactory.java:[45,54] 找不到符号

执行成功后将会在工程的build目录下生成安装包


build/datax-web-{VERSION}.tar.gz

此时的目录结构如下

数据同步工具—DataX—Web部署使用

部署

解压安装包

将压缩包放在选定的安装目录,解压安装包


tar xzvf datax-web-2.1.2.tar.gz

执行安装脚本

进入解压后的目录,找到bin目录下面的install.sh文件,如果选择交互式的安装,则直接执行


./bin/install.sh

在交互模式下,对各个模块的package压缩包的解压以及configure配置脚本的调用,都会请求用户确认,可根据提示查看是否安装成功,如果没有安装成功,可以重复尝试; 如果不想使用交互模式,跳过确认过程,则执行以下命令安装

./bin/install.sh --force

这里我们使用交互式安装


Password:

2022-10-01 20:18:45.3N [INFO] (96375) ####### Start To Uncompress Packages ######

2022-10-01 20:18:45.3N [INFO] (96375) Uncompressing….

Do you want to decompress this package: [datax-admin_2.1.2_1.tar.gz]? (Y/N)n

2022-10-01 20:18:51.3N [INFO] (96375) Uncompress package: [datax-admin_2.1.2_1.tar.gz] to modules directory

tar: Option –skip-old-files is not supported

Usage:

List: tar -tf

Extract: tar -xf

Create: tar -cf [filenames…]

Help: tar –help

Do you want to decompress this package: [datax-executor_2.1.2_1.tar.gz]? (Y/N)y

2022-10-01 20:18:58.3N [INFO] (96375) Uncompress package: [datax-executor_2.1.2_1.tar.gz] to modules directory

tar: Option –skip-old-files is not supported

Usage:

List: tar -tf

Extract: tar -xf

Create: tar -cf [filenames…]

Help: tar –help

2022-10-01 20:18:58.3N [INFO] (96375) ####### Finish To Umcompress Packages ######

Scan modules directory: [/Users/liuwenqiang/workspace/soft/datax-web-2.1.2/bin/../modules] to find server under dataxweb

2022-10-01 20:18:58.3N [INFO] (96375) ####### Start To Install Modules ######

2022-10-01 20:18:58.3N [INFO] (96375) Module servers could be installed:

2022-10-01 20:18:58.3N [INFO] (96375) ####### Finish To Install Modules ######

进入到 packages 目录下,执行下面的命令


tar xzvf datax-admin_2.1.2_1.tar.gz -C ../modules
tar xzvf datax-executor_2.1.2_1.tar.gz -C ../modules

数据同步工具—DataX—Web部署使用

配置数据库

我们需要配置datax-web 的数据库地址信息


vim modules/datax-admin/conf/bootstrap.properties

内容如下


#Database
DB_HOST=localhost
DB_PORT=3306
DB_USERNAME=root
DB_PASSWORD=www1234
DB_DATABASE=datax_web

初始化数据库

创建一个名为​​datax_web​​ 的数据库


mysql -uroot -pwww1234 -e "create database datax_web"

然后执行​​./bin/db/datax-web.sql​​ SQL 文件


mysql -uroot -pwww1234 -Ddatax_web < ./bin/db/datax_web.sql

我们看到下面的表已经被创建

数据同步工具—DataX—Web部署使用

其他配置

配置​​executor​​


vim modules/datax-executor/bin/env.properties

主要配置端口和可执行脚本


DATAX_ADMIN_PORT=9527

## PYTHON脚本执行位置

#PYTHON_PATH=/home/hadoop/install/datax/bin/datax.py

PYTHON_PATH=/Users/liuwenqiang/workspace/soft/datax/bin/datax.py

端口和服务端保持一致,默认是​​9527​​

数据同步工具—DataX—Web部署使用

启动服务


./bin/start-all.sh

启动成功后可以看到下面的进程


99124 DataXExecutorApplication
98904 DataXAdminApplication

打开浏览器进入


http://localhost:9527/index.html

数据同步工具—DataX—Web部署使用

输入用户名 admin 密码 123456 就可以直接访问系统

数据同步工具—DataX—Web部署使用

停止服务或者启动某个服务


# 启动 admin 或者 execuotr

./bin/start.sh -m {module_name}

# 停止所有服务

./bin/stop-all.sh

# 当然也可以单一地停止某一模块服务:

./bin/stop.sh -m {module_name}

集群部署

修改modules/datax-executor/conf/application.yml文件下admin.addresses地址。 为了方便单机版部署,项目目前没有将ip部分配置到env.properties,部署多节点时可以将整个地址作为变量配置到env文件。

将官方提供的tar包或者编译打包的tar包上传到服务节点,按照步骤5中介绍的方式单一地启动某一模块服务即可。例如执行器需要部署多个节点,仅需启动执行器项目,执行 ​​./bin/start.sh -m datax-executor​​

调度中心、执行器支持集群部署,提升调度系统容灾和可用性。


* 1.调度中心集群:

DB配置保持一致;

集群机器时钟保持一致(单机集群忽视);

* 2.执行器集群:

执行器回调地址(admin.addresses)需要保持一致;执行器根据该配置进行执行器自动注册等操作。

同一个执行器集群内AppName(executor.appname)需要保持一致;调度中心根据该配置动态发现不同集群的在线执行器列表。

可以看到我们目前只有一个executor

数据同步工具—DataX—Web部署使用

使用

前面我们已经部署好了,下面我们看怎么使用DataX—Web

创建项目

首先在项目管理页面上创建项目

数据同步工具—DataX—Web部署使用

创建数据源

在数据源管理页面上创建数据源

数据同步工具—DataX—Web部署使用

我们可以点击测试进行测试看配置是否正确

数据同步工具—DataX—Web部署使用

创建任务模版

在任务管理页面下的​​DataX任务模版​​ 菜单下创建任务模版

数据同步工具—DataX—Web部署使用

构建任务

构建reader

从数据源中选择即可

数据同步工具—DataX—Web部署使用

构建writer

从数据源中选择即可,这里我们选择了同一个库下的​​city_sink​​​ ,这个表和city 的表结构完全相同 ​​create table city_sink like city;​​

数据同步工具—DataX—Web部署使用

字段映射

数据同步工具—DataX—Web部署使用

构建

第一步 点击构建则会生成json

数据同步工具—DataX—Web部署使用

第二步 选择任务模版,然后下一步则会生成任务

数据同步工具—DataX—Web部署使用

这里我们可以在操作按钮处选择执行一次,然后我们发现任务的执行状态已经变成成功了

数据同步工具—DataX—Web部署使用

可以看到数据已经同步到了city_sink

数据同步工具—DataX—Web部署使用

Mysql同步数据到Hive

我们只需要创建一个Hive 的数据源

数据同步工具—DataX—Web部署使用

然后构建任务的时候,构建writer 选择hive ,然后选择对应的表即可创建,因为过程很简单这里就不演示了

数据同步工具—DataX—Web部署使用

然后执行发现执行失败了

数据同步工具—DataX—Web部署使用

去日志管理页面查看日志

数据同步工具—DataX—Web部署使用

告诉我们参数不对,缺少了必须填写的参数

数据同步工具—DataX—Web部署使用

我们可以再回过头去看writer 的配置,我们发现确实有很多参数没有配置,参考上一节

数据同步工具—DataX—Web部署使用

既然如此我们就编辑下这个配置,更新配置后再次执行发现执行成功了

数据同步工具—DataX—Web部署使用

hdfs 上也看到数据了

数据同步工具—DataX—Web部署使用

Hive 数据同步到Mysql

下面我们同步Hive的数据到Mysql, 我们把上同步到Hive 的city 表同步到mysql 的city_sink , 这里我们先清空mysql 的city_sink,或者在writer的时候通过前置SQL清空

reader 的信息如下,发现我们在选择hive 作为writer 的时候没有让我们填写 “path、defaultFS” 等信息,导致任务报错,作为reader的时候却要我们写,所以发现还是有bug 的

数据同步工具—DataX—Web部署使用

任务已经被构建

数据同步工具—DataX—Web部署使用

执行成功了

数据同步工具—DataX—Web部署使用

总结

这一节主要部署了DataX—Web ,DataX—Web 主要解决了DataX的任务管理、运维的问题,而且有自己的调度,但是在整个数仓中却难以使用,因为我们无法将DataX—Web 和已有的调度系统进行整合。

所以比较好的方式是在我们的调度系统中去集成DataX—Web,那这个时候只有任务构建这个模块是我们需要的,其他的监控、数据源管理调度系统已经有了,所以这个东西应用场景有限,只能作为一个参考。

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/3adc761cd1.html