Datax及Datax-web的使用

2024-08-02 20:44:52 浏览数 (3)

Datax及Data-web的使用

一、介绍

DataX 是 DataWorks数据集成的开源版本,在广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。

DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。

二、下载使用

1)datax

首先,必要的配置

  • Linux
  • JDK(1.8以上,推荐1.8)
  • Python(2或3都可以)
  • Apache Maven 3.x (Compile DataX)

使用分两种方式

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

代码语言:shell复制
 $ cd  {YOUR_DATAX_HOME}/bin
 $ python datax.py {YOUR_JOB.json}

自检脚本:python {YOUR_DATAX_HOME}/bin/datax.py {YOUR_DATAX_HOME}/job/job.json


第二种方式,源码编译方式

下载源码,可以到github上进行下载

代码语言:shell复制
通过`maven`打包构建
cd {DataX_source_code_home}  
mvn -U clean package assembly:assembly -Dmaven.test.skip=true

打包成功后,进入`{DataX_source_code_home}/target/datax/datax/`,目录结构如下
bin     conf        job     lib     log     log_perf    plugin      script    tmp

执行脚本`./stream2stream.json`
python datax.py ./stream2stream.json

2)datax-web

在上面的使用来看,有点繁琐了,json怎么写还不知道呢

有没有一个后台web界面,我们直接进行管理即可,就是这个开源工具

WeiYe-Jing/datax-web: DataX集成可视化页面,选择数据源即可一键生成数据同步任务,支持RDBMS、Hive、HBase、ClickHouse、MongoDB等数据源,批量创建RDBMS数据同步任务,集成开源调度系统,支持分布式、增量同步数据、实时查看运行日志、监控执行器资源、KILL运行进程、数据源信息加密等。 (github.com)

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

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


下载安装

  1. 下载官方提供的版本tar版本包 点击下载 提取码:cpsk
  2. 编译打包(官方提供的tar包跳过) 直接从Git上面获得源代码,在项目的根目录下执行如下命令编译 mvn clean install ## 生成打包目录文件 build/datax-web-{VERSION}.tar.gz ## 解压 tar -zxvf datax-web-{VERSION}.tar.gz ## 进入解压后的目录,找到bin目录下面的install.sh文件,如果选择交互式的安装,则直接执行 ./bin/install.sh ## 在交互模式下,对各个模块的package压缩包的解压以及configure配置脚本的调用,都会请求用户确认,可根据提示查看是否安装成功,如果没有安装成功,可以重复尝试; 如果不想使用交互模式,跳过确认过程,则执行以下命令安装 ./bin/install.sh --force
  3. 安装过程中的配置如果你的服务上安装有mysql命令,在执行安装脚本的过程中则会出现以下提醒: 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命令,可以修改文件 vim ./modules/datax-admin/conf/bootstrap.properties #Database #DB_HOST= #DB_PORT= #DB_USERNAME= #DB_PASSWORD= #DB_DATABASE=
  4. 其余配置/modules/datax-admin/bin/env.properties配置邮件服务(可跳过) MAIL_USERNAME="" MAIL_PASSWORD="" ## 执行datax的python脚本地址 PYTHON_PATH= ## 保持和datax-admin服务的端口一致;默认是9527,如果没改datax-admin的端口,可以忽略 DATAX_ADMIN_PORT=
  5. 启动启动 ./bin/start-all.sh # 中途可能发生部分模块启动失败或者卡住,可以退出重复执行,如果需要改变某一模块服务端口号,则 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}
  6. 检查服务是否启动查看是否有DataXAdminApplication和DataXExecutorApplication进程,如果存在这表示项目运行成功 jps # 如果项目启动失败,请检查启动日志:modules/datax-admin/bin/console.out或者modules/datax-executor/bin/console.out # 脚本使用的都是bash指令集,如若使用sh调用脚本,可能会有未知的错误

三、具体使用

1)创建项目,创建数据源

创建项目

创建数据源

2)创建任务模板

cron表达式大家都会的,不细讲;这里主要是创建一个模板,后面会进行使用

3)创建任务

选择source表和target表的字段,我们这边表结构是一样的,全选即可

下一步就能创建出所需的json

先构建,后选择上一节创建的任务模板

json有点长,拉到最下面,点击下一步,完成任务创建

4)执行任务

点击操作,执行一次

当然也可以等待下次触发时间

查看target数据库,发现数据已同步;完成

四、最后

上面展示的是全量同步,可以做到增量,这个可以后面再研究研究

1 人点赞