前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式数据同步工具之DataX-Web部署使用

分布式数据同步工具之DataX-Web部署使用

作者头像
大数据技术架构
发布2022-12-01 15:55:33
7.8K0
发布2022-12-01 15:55:33
举报
文章被收录于专栏:大数据技术架构

背景介绍,因为需求是外部数据和内部生产数据之间需要通步,因此dataworks的数据同步模块的源端和目标是不支持多网络环境,要么公网,要么内网,因此这种需求我们的dataworks是不能使用的,我们调研了两个工具,一个是dataxweb ,一个是dolphinscheduler ,今天的篇幅主要讲解一下搭建的dataxweb的流程。

一、环境准备

1) 基础软件安装

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

2)dataX安装

大家可以选择多种多种方法安装,此处选择直接下载datax安装包,

Datax: http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

下载后解压至本地某个目录,进入bin目录,即可运行同步作业:

代码语言:javascript
复制
$ cd  {YOUR_DATAX_HOME}/bin
$ python datax.py {YOUR_JOB.json}
自检脚本:python {YOUR_DATAX_HOME}/bin/datax.py {YOUR_DATAX_HOME}/job/job.json

验证datax是安装成功的。

Datax的其他安装方式,datax官网有介绍:

https://github.com/alibaba/DataX/blob/master/userGuid.md

二、datax-web的安装

1) dataxweb安装包准备

  • 载官方提供的版本tar版本包https://pan.baidu.com/s/13yoqhGpD00I82K4lOYtQhg 提取码: cpsk
  • 编译打包(官方提供的tar包跳过) 直接从Git上面获得源代码,在项目的根目录下执行如下命令 mvn clean install 执行成功后将会在工程的build目录下生成安装包 , build/datax-web-{VERSION}.tar.gz

2) 开始部署

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

代码语言:javascript
复制
tar -zxvf datax-web-{VERSION}.tar.gz 
mv datax-web-2.1.2 datax-web

3)执行一键安装脚本

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

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

代码语言:javascript
复制
sh install.sh –force

4) 数据库初始化

如果你的服务上安装有mysql命令,在执行安装脚本的过程中则会出现

以下提醒:

代码语言:javascript
复制
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)

按照提示输入数据库地址,端口号,用户名,密码以及数据库名称,大部分情况下即可快速完成初始化。 如果服务上并没有安装mysql命令,则可以取用目录下/bin/db/datax-web.sql脚本去手动执行,完成后修改相关配置文件:

代码语言:javascript
复制
vi ./modules/datax-admin/conf/bootstrap.properties

这里我选择的是阿里云的rds,也可以选择mysql, 按照具体情况配置对应的值即可。

5) 配置

安装完成之后,

在项目目录:/modules/datax-admin/bin/env.properties 配置邮件服务(可跳过)

代码语言:javascript
复制
MAIL_USERNAME=""
MAIL_PASSWORD=""

此文件中包括一些默认配置参数,例如:server.port,具体请查看文件。在项目目录下/modules/datax-execute/bin/env.properties指定PYTHON_PATH的路径

代码语言:javascript
复制
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等,具体请查看文件。

6) 启动服务

一键启动所有服务

中途可能发生部分模块启动失败或者卡住,可以退出重复执行,如果需要改变某一模块服务端口号,则:

代码语言:javascript
复制
vi ./modules/{module_name}/bin/env.properties

找到SERVER_PORT配置项,改变它的值即可。 当然也可以单一地启动某一模块服务:
./bin/start.sh -m {module_name}

 一键取消所有服务
./bin/stop-all.sh

当然也可以单一地停止某一模块服务:
./bin/stop.sh -m {module_name}

7) 查看服务

在Linux环境下使用JPS命令,查看是否出现DataXAdminApplication和DataXExecutorApplication进程,如果存在这表示项目运行成功 如果项目启动失败,请检查启动日志:modules/datax-admin/bin/console.out或者modules/datax-executor/bin/console.out

Tips: 脚本使用的都是bash指令集,如若使用sh调用脚本,可能会有未知的错误

8) 运行

部署完成后,在浏览器中输入 http://ip:port/index.html 就可以访问对应的主界面(ip为datax-admin部署所在服务器ip,port为为datax-admin 指定的运行端口)

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

9) 运行日志

部署完成之后,在modules/对应的项目/data/applogs下(用户也可以自己指定日志,修改application.yml中的logpath地址即可),用户可以根据此日志跟踪项目实际启动情况。如果执行器启动比admin快,执行器会连接失败,日志报"拒绝连接"的错误,一般是先启动admin,再启动executor,30秒之后会重连,如果成功请忽略这个异常。

10) 集群部署

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

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

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

代码语言:javascript
复制
* 1.调度中心集群:
DB配置保持一致;<br>
集群机器时钟保持一致(单机集群忽视);<br>
* 2.执行器集群:
    执行器回调地址(admin.addresses)需要保持一致;执行器根据该配置进行执行器自动注册等操作。
    同一个执行器集群内AppName(executor.appname)需要保持一致;调度中心根据该配置动态发现不同集群的在线执行器列表。

11) 邮件源码修改

因为我们使用的是微软的邮箱,exchange 2016 ,所以在配置邮件的时候发布出来邮件,因此我把原来下载下来,debug看一下原因,后面发现是因为在源码中存在不严谨的地方,把username后面也当成了user ,我们自建的邮件服务器是 不支持的,因此我把springboot的注解做了修改,重新打包上传安装。

三、DataX-web的使用

1)执行器配置(使用开源项目xxl-job)

  • 1、"调度中心OnLine:"右侧显示在线的"调度中心"列表, 任务执行结束后, 将会以failover的模式进行回调调度中心通知执行结果, 避免回调的单点风险;
  • 2、"执行器列表" 中显示在线的执行器列表, 可通过"OnLine 机器"查看对应执行器的集群机器;
  • 执行器属性说明
代码语言:javascript
复制
1、AppName: (与datax-executor中application.yml的datax.job.executor.appname保持一致)
   每个执行器集群的唯一标示AppName, 执行器会周期性以AppName为对象进行自动注册。可通过该配置自动发现注册成功的执行器, 供任务调度时使用;
2、名称: 执行器的名称, 因为AppName限制字母数字等组成,可读性不强, 名称为了提高执行器的可读性;
3、排序: 执行器的排序, 系统中需要执行器的地方,如任务新增, 将会按照该排序读取可用的执行器列表;
4、注册方式:调度中心获取执行器地址的方式;
    自动注册:执行器自动进行执行器注册,调度中心通过底层注册表可以动态发现执行器机器地址;
    手动录入:人工手动录入执行器的地址信息,多地址逗号分隔,供调度中心使用;
5、机器地址:"注册方式"为"手动录入"时有效,支持人工维护执行器的地址信息;

2)创建数据源

3)创建任务模版

4) 构建JSON脚本

  • 步骤一,步骤二,选择第二步中创建的数据源,JSON构建目前支持的数据源有hive,mysql,oracle,postgresql,sqlserver,hbase,mongodb,clickhouse 其它数据源的JSON构建正在开发中,暂时需要手动编写。
  • 字段映射
  • 点击构建,生成json,此时可以选择复制json然后创建任务,选择datax任务,将json粘贴到文本框。也可以点击选择模版,直接生成任务。

5)批量创建任务

6) 任务创建介绍(关联模版创建任务不再介绍,具体参考4. 构建JSON脚本)

支持DataX任务,Shell任务,Python任务,PowerShell任务

代码语言:javascript
复制
阻塞处理策略:调度过于密集执行器来不及处理时的处理策略;

单机串行:调度请求进入单机执行器后,调度请求进入FIFO队列并以串行方式运行;
丢弃后续调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,本次请求将会被丢弃并标记为失败;
覆盖之前调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,将会终止运行中的调度任务并清空队列,然后运行本地调度任务;
增量增新建议将阻塞策略设置为丢弃后续调度或者单机串行

设置单机串行时应该注意合理设置重试次数(失败重试的次数*每次执行时间<任务的调度周期),重试的次数如果设置的过多会导致数据重复,例如任务30秒执行一次,每次执行时间需要20秒,设置重试三次,如果任务失败了,第一个重试的时间段为1577755680-1577756680,重试任务没结束,新任务又开启,那新任务的时间段会是1577755680-1577758680

  • 增量参数设置
  • 分区参数设置

7)任务列表

8) 可以点击查看日志,实时获取日志信息,终止正在执行的datax进程

9 ) 任务资源监控

10) admin可以创建用户,编辑用户信息

小结:

如果公司的数据量不是很大,并且在预算有限的情况下,dataxweb是个不错的选择,后续我会接着讲,dolphinscheduler的相关的datax的调度模块,以及遇到的问题和解决。

参考文章:

1.https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/datax-web-deploy.md#2%E6%89%A7%E8%A1%8C%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E8%84%9A%E6%9C%AC

2.https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/increment-desc.md

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据技术架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 进入解压后的目录,找到bin目录下面的install.sh文件,如果选择交互式的安装,则直接执行
  • 按照提示输入数据库地址,端口号,用户名,密码以及数据库名称,大部分情况下即可快速完成初始化。 如果服务上并没有安装mysql命令,则可以取用目录下/bin/db/datax-web.sql脚本去手动执行,完成后修改相关配置文件:
  • 这里我选择的是阿里云的rds,也可以选择mysql, 按照具体情况配置对应的值即可。
  • 一键启动所有服务
  • 中途可能发生部分模块启动失败或者卡住,可以退出重复执行,如果需要改变某一模块服务端口号,则:
  • 2)创建数据源
  • 4) 构建JSON脚本
  • 5)批量创建任务
  • 6) 任务创建介绍(关联模版创建任务不再介绍,具体参考4. 构建JSON脚本)
  • 支持DataX任务,Shell任务,Python任务,PowerShell任务
  • 7)任务列表
  • 8) 可以点击查看日志,实时获取日志信息,终止正在执行的datax进程
  • 9 ) 任务资源监控
  • 10) admin可以创建用户,编辑用户信息
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档