DataX与DataX-Web安装与使用

DataX

  1. github地址:DataX/introduction.md at master · alibaba/DataX · GitHub

环境准备

  1. Linux环境系统

  2. JDK(1.8及其以上版本,推荐1.8)

  3. Python(2或者3都可以)

  4. Apache Maven 3.x(源码编译安装需要)

安装部署

二进制安装
  1. 下载地址:https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202308/datax.tar.gz

  2. 上传之Linux服务器指定位置

  3. 解压该文件

    tar -zxvf datax.tar.gz
    
  4. 自检文件

    python /home/opt/datax/datax/bin/datax.py /home/opt/datax/datax/job/job.json

python3支持
  1. 将bin目录下的三个py文件进行修改;

  2. print xxx 替换为 print(xxx)

  3. Exccption, e替换为 Exception as e

  4. 自检文件

    python3 /home/opt/datax/datax/bin/datax.py /home/opt/datax/datax/job/job.json
    

模版文件生成

python3 /home/opt/datax/datax/bin/datax.py -r mysqlreader -w hdfswriter > ~/home/opt/datax/datax/job/mysql2hdfs.json

自定义同步脚本

{"job": {"setting": {"speed": {"channel": 1}},"content": [{"reader": {"name": "streamreader","parameter": {"column": [{"value": "hello world","type": "string"},{"value": "datax","type": "string"},{"value": 12312312,"type": "long"}],"sliceRecordCount": 1 // 读取数据列中的重复次数}},"writer": {"name": "streamwriter","parameter": {"print": true}}}]}
}python3 /home/opt/datax/datax/bin/datax.py /home/opt/datax/datax/job/jobs/job1.json

动态传参

  • 将mysql数据同步到HDFS,多次同步的时候只是表的名字和字段不同。

  • 将mysql的数据增量同步到HDFS或者Hive中的时候,需要指定每一次同步的时间。

  • 所谓的动态传参,就是在json的同步方案中,使用类似变量的方式来定义一些可以改变的参数,在执行同步方案的时候,可以指定这些参数具体的值。

    动态传参的案例

    {
    “job”: {
    “setting”: {
    “speed”: {
    “channel”: 1
    }
    },
    “content”: [
    {
    “reader”: {
    “name”: “streamreader”,
    “parameter”: {
    “column”: [
    {“value”: “hello world”, “type”: “string”},
    {“value”: “datax”, “type”: “string”},
    {“value”: 12312312, “type”: “int”}
    ],
    “sliceRecordCount”: $TIMES // 读取数据列中的重复次数
    }
    },
    “writer”: {
    “name”: “streamwriter”,
    “parameter”: {
    “print”: true
    }
    }
    }
    ]
    }
    }

    python3 /home/opt/datax/datax/bin/datax.py -p “-DTIMES=3” /home/opt/datax/datax/job/jobs/job1.json

并发设置

  • 直接指定Channel数量

  • 通过Bps计算channel数量

  • 通过tps计算channel数量

直接指定

在同步方案的json文件中,可以设置job.setting.speed.channel来设置channel的数量,这是最直接的方式,在这种配置下,channel的Bps为默认的1MBps,即每秒传输1MB的数据。

Bps

Bps(Byte per second) 是一种非常常见的数据传输速率的表示,在DataX中,可以通过参数设置来限制总job的Bps以及单个channel的Bps,来达到限速和channel数量计算的效果。

channel = Job Bps/channel Bps

  • Job Bps: 对一个job进行整体的限速,可以通过job.setting.speed.byte进行设置

  • channel Bps: 对单个channel的限速,可以通过core.transport.channel.speed.byte进行设置

tps

tps(transcation per second)是一种很常见的数据传输速率的表示,在DataX中,可以通过参数设置来限制总Job的tps以及单个channel的tps,来达到限速和channel数量计算的效果。

channel= job tps/channel tps

优先级
  • 如果同时配置了Bps和tps限制,以下的为准。

  • 只有在Bps和tps都没有配置的时候,才会以channel数量配置为准。

stream

streamreader
参数说明

参数

描述

column

定义内存数据的所有列。由一个JSON组成,需要滴定仪数据与类型。

sliceRecordCount

每个channel中,数据重复的数量。

数据类型

在定义每一个列的数据的时候,需要指定每一列的数据类型。DataX中支持如下的数据类型:

  • Long

  • Double

  • String

  • Date

  • Boolean

  • Bytes

streamwriter
参数说明

参数

描述

print

将内存中的数据打印在控制台上。

encoding

输出数据使用的字符集,默认是UTF-8。

mysql

mysqlreader

介绍

MysqlRader插件实现了从mysql读取数据,在底层实现上,MySQLReader通过JDBC远程MySQL数据库,并执行相应的SQL数据,将数据从MySQL数据库中查询出来。

简而言之,MySQLReader通过JDBC连接器连接到远程的MySQL数据库,并根据用户配置的信息生成查询的SQL语句,然后发送到远程MySQL数据库,并将该SQL执行返回结果使用DataX自定义的数据离线拼装为抽象的数据集,并传递给下游writer处理。

对于用户配置Table、column、where的信息,MySQLReader将其拼接成SQL语句发送到MySQL数据库;对于用户配置querySQL信息,MySQLReader直接将其发送到MySQL数据库;

参数说明

参数

描述

必选

默认值

jdbcUrl

描述的是对端数据库的JDBC连接信息,使用JSON的数组描述,并支持一个库填写多个连接地址。之所以使用JSON数组描述连接信息,是因为阿里集团内部支持多个IP探测,如果配置了多个,MySQLReader可以一次探测IP的可能性,直到选择一个合法的IP。如果全部连接失败,MySQLReader报错。注意,jdbcUrl必须包含在connection配置单元中。对于阿里集团外部使用情况,JSON数组填写一个JDBC连接即可。

username

连接到数据库的用户名

password

连接到数据库的密码

table

所选取的需要同步的表。使用JSON的数组描述,因此支持多张表同时抽取。当配置为多张表时,用户自己需要保证多张表是同一个schema结构,MySQLReader不予检查表是否同一逻辑表。注意,table必须包含在connection的配置单元中。

column

所配置的表中需要同步的列名集合,使用JSON数组描述字段信息。用户使用*代表默认使用所有列配置。
支持列裁剪,即列可以挑选部分列进行导出。
支持列换序,即列可以不按照schema信息进行导出。
支持常量配置,用户需要按照MySQL语法格式。[“id”, “tabke”, “1”]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

类型转换

MySQLReader与MySQL的类型比较

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

案例
{"job": {"setting": {"speed": {"channel": 3},"errorLimit": {"record": 0,"percentage": 0.02}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "123456","column": ["id","username","password","age","sex","phone"],"splitPk": "username","connection": [{"table": ["admin"],"jdbcUrl": ["jdbc:mysql://192.168.42.130:3306/springboot-backend"]}]}},"writer": {"name": "streamwriter","parameter": {"print": true}}}]}
}
执行方法
python3 /home/opt/datax/datax/bin/datax.py mysql2stream.json
错误处理

1、在/dataX/plugin/reader/mysqlreader/libs中,把mysql-connector-java-5.1.34.jar包删除

rm -rf mysql-connector-java-5.1.34.jar

2、将MySQL8相关的jar包复制到该目录下

mysqlreader读取模式

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

mysqlwriter

介绍

mysqlwriter插件实现了写入数据到mysql数据库的目的表的功能。在底层实现上,mysqlwriter通过JDBC连接到远程数据库,并执行相应的inster into…或者replace into…的SQL语句,将数据写入到MySQL的数据库,内部会分批次提交入库,需要数据库本身采用innodb引擎。

MySQLwriter面向ETL开发工程师,使用MySQLwriter从数仓导入数据到MySQL,同时MySQLwriter也可以作为数据迁移工具,为DBA等用户提供服务。

实现原理

MySQLwriter通过DataX框架获取Reader生成的协议数据,根据你配置的writerMode生成

  • Insert: Insert into … (当主键、唯一性索引冲突时会写不进去冲突的行)

  • replace:replace into…(没有遇到主键、唯一性索引冲突时,与insert info行为一致,冲突时会用新行替换原有行的所有字段)

  • update:Insert into… on duplicate key update…(如果 on duplicate key update的子句中要更新的值为原来的值都一样,则不更新,否则就更新)

生成上述的雨具写入数据到MySQL,处于性能考虑,采用PreparedStatement+Batch,并且设置了rewriteBatchedStatement=true,将数据缓冲到线程上下文buffer中,当buffer累计到预定阈值时,才发起写入请求。

注意

目标表所在数据库必须要主表才能写入数据;整合任务至少需要具备insert into/replace into的权限,是否需要其他权限,取决于你任务配置中在presql和postsql中指定的语句。

参数说明

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

错误处理

1、在/dataX/plugin/reader/mysqlreader/libs中,把mysql-connector-java-5.1.34.jar包删除
rm -rf mysql-connector-java-5.1.34.jar

2、将MySQL8相关的jar包复制到该目录下

案例
{"job": {"setting": {"speed": {"channel": 3}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "123456","column": ["id","username","password","age","sex","phone"],"splitPk": "username","connection": [{"table": ["admin"],"jdbcUrl": ["jdbc:mysql://192.168.42.130:3306/springboot-backend"]}]}},"writer": {"name": "mysqlwriter","parameter": {"username": "root","password": "123456","column": ["id","username","password","age","sex","phone"],"writeMode": "replace","splitPk": "username","connection": [{"table": ["admin_bak"],"jdbcUrl": "jdbc:mysql://192.168.42.130:3306/springboot-backend"}]}}}]}
}
执行
python3 /home/opt/datax/datax/bin/datax.py mysql2mysql.json

shell脚本

#!/bin/bash# 设置需要同步的哪一天的数据
# 一般情况下,当天产生的数据,会在第二天的凌晨增量导入到数据仓库中
dt=`date -d yesterday +"%Y-%m-%d"`# 提取时间分量
year=${dt:0:4}
month=${dt:5:2}#设置DataX的路径
DATAX_HOME=/home/opt/datax/datax#设置jobs的路径
JOBS_HOME=/home/opt/datax/datax/job/jobs# 增量同步数据
python3 $DATAX_HOME/bin/datax.py -p "-Ddate=$dt" $JOBS_HOME/mysql2mysql.json

DataX | MySQL多表全量同步和多表定时增量同步_datax同步多张表-CSDN博客

crond服务的安装与管理

  1. 安装crond服务工具

    yum install crontabs #安装,注意包名

  2. 开启crond服务

    sudo systemctl start crond #立即启动 crond 服务
    sudo systemctl enable crond #设置 crond 服务开机自启
    sudo systemctl enable --now crond #设置开机自启同时启动

  3. 关闭crond服务

    sudo systemctl stop crond #立即停止 crond 服务
    sudo systemctl disable crond #取消 crond 服务的开机自启
    sudo systemctl disable --now crond #取消开机自启同时停止

  4. 查看crond服务的状态

    sudo systemctl status crond #该命令会显示 crond 服务当前的运行状态以及是否已启用开机自启

  5. 重启crond服务

    sudo systemctl restart crond #重启 crond 服务

配置定时任务脚本

  1. 添加定时器,脚本授权

    chmod 777 shell1.sh
    
  2. 编辑定时器

    */1 * * * * /home/opt/datax/datax/job/shells/shell1.sh > /home/opt/datax/datax/job/shells/log.log
    
  3. 查看crontab日志

    tail -f /var/log/cron
    或
    tail -f /var/spool/mail/root
    
  4. 修改shell1.sh脚本

    #!/bin/bash
    . /etc/profile
    # 设置需要同步的哪一天的数据
    # 一般情况下,当天产生的数据,会在第二天的凌晨增量导入到数据仓库中
    dt=`date -d yesterday +"%Y-%m-%d"`# 提取时间分量
    year=${dt:0:4}
    month=${dt:5:2}#设置DataX的路径
    DATAX_HOME=/home/opt/datax/datax#设置jobs的路径
    JOBS_HOME=/home/opt/datax/datax/job/jobs# 增量同步数据
    python3 $DATAX_HOME/bin/datax.py -p "-Ddate=$dt" $JOBS_HOME/mysql2mysql.json
    

DataX-Web

1、datax-web介绍

1.1、datax-web是什么

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

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

任务“执行器”支持集群部署,支持执行器多节点路由策略选择,支持超时控制、失败重试、失败警告、任务依赖、执行器CPU、内存、负载的监控等等。

1.2、datax-web架构

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2、datax-web部署

2.1、环境要求

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.2、按照
2.2.1、二进制安装

直接将安装包下载,解压安装到指定路径

https://github.com/WeiYe-Jing/datax-web/archive/refs/tags/v-2.1.2.tar.gz

tar -zxvf datax-web-2.1.2.tar.gz

在/bin下执行install.sh文件

sh install.sh

如果不想交互式执行,直接执行

sh install.sh -force

修改数据库配置

/datax-web-2.1.2/modules/datax-admin/conf/bootstrap.properties

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

配置

安装完成之后,在项目目录: /datax-web-2.1.2/modules/datax-admin/bin/env.properties 配置邮件服务(可跳过)

# mail account
MAIL_USERNAME=""
MAIL_PASSWORD=""

此文件中包括一些默认配置参数,例如:server.port,具体查看文件。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在项目目录下/datax-web-2.1.2/modules/datax-executor/bin/env.properties执行PYTHON_PATH的路径

# environment variables#JAVA_HOME=""SERVICE_LOG_PATH=${BIN}/../logs
SERVICE_CONF_PATH=${BIN}/../conf
DATA_PATH=${BIN}/../data## datax json文件存放位置
JSON_PATH=${BIN}/../json## executor_port
EXECUTOR_PORT=9999## 保持和datax-admin端口一致
DATAX_ADMIN_PORT=## PYTHON脚本执行位置
#PYTHON_PATH=/home/hadoop/install/datax/bin/datax.py
PYTHON_PATH=/home/opt/datax/datax/bin/datax.py## dataxweb 服务端口
SERVER_PORT=9504#PID_FILE_PATH=${BIN}/service.pid#debug 远程调试端口
#REMOTE_DEBUG_SWITCH=true
#REMOTE_DEBUG_PORT=7004

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

启动

一键启动所有服务

sh /home/opt/datax/datax-web-2.1.2/bin/start-all.sh

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

启动成功后会显示两个进程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一键停用所有服务

sh /home/opt/datax/datax-web-2.1.2/bin/stop-all.sh

WebUI

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/494411.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语音助手关键模块整理

常见的 ASR 技术和平台包括: Google Speech-to-Text:这是一个非常流行的 ASR 服务,提供高精度的语音转文本功能,广泛应用于各种语音助手和智能设备。 Microsoft Azure Speech:微软的语音服务,也包括 ASR 技…

Day13 用Excel表体验梯度下降法

Day13 用Excel表体验梯度下降法 用所学公式创建Excel表 用Excel表体验梯度下降法 详见本Day文章顶部附带资源里的Excel表《梯度下降法》,可以对照表里的单元格公式进行理解,还可以多尝试几次不同的学习率 η \eta η来感受,只需要更改学习率…

NACA四位数字翼型

NACA四位数字翼型,以NACA 2412为例 第一位数字2 —相对弯度 第二位数字4 —相对弯度所有位置(单位化后的) 最末两位数字12 —相对厚度 所有NACA四位数字翼型的(相对厚度所在的位置)

解锁动态规划的奥秘:从零到精通的创新思维解析(3)

解锁动态规划的奥秘:从零到精通的创新思维解析(3) 前言: 小编在前几日书写了关于动态规划习题的博客(PS:其实这些都是我的存稿,我已经好久没写博客了截止到现在,确实摆烂&#xff…

UE5仿漫威争锋灵蝶冲刺技能

这两天玩了一下漫威争锋Marvel Rivals,发现是UE5做的,对里面一些角色技能挺感兴趣的,想简单复刻一下技能功能,顺便复习一下学过的知识 首先把摄像机设置调整一下 CameraBoom里搜索lag 把摄像机延迟关掉 ,这样摄像机就…

算法题(13):异或变换

审题: 这题的数据量比较大,所以暴力解法肯定是过不了了,我们根据异或运算的性质来找找规律,不难发现他是有循环周期的。 最终我们的周期是一个不小于n的2的最小整数次幂。 疑问一:为什么会有循环? 1.因为这…

oracle: create new database

用database configuration Assistant 引导创建数据库。记得给system,sys 设置自己的口令,便于添加新操作用户。 创建操作用户: -- 别加双引号,否则,无法用 create user geovindu identified by 888888; create user geovin identi…

IntelliJ IDEA 快捷键大全:提升开发效率的利器

目录 一、基础快捷键 1. 文件操作快捷键 2. 编辑(Editing) 2.1 代码补全与导航 2.2 代码编辑 2.3 代码折叠与展开 3. 查找与替换 4. 调试 5. 版本控制 高级快捷键 重构快捷键:让代码更加优雅 导航快捷键:快速定位代码 …

GOC编程 第2课 简单命令---直走和转弯命令

第2课 简单命令---直走和转弯命令 goc电子课程https://www.51goc.com/static/gocDemo/lesson.html?options%C5%81%C4%98%C5%96%C5%9F%C5%89%C5%89%C5%95%C5%94%C5%B3%C5%9E%C4%98%C4%80%C4%98%C5%94%C5%9F%C5%8D%C4%88%C4%98%C5%87&winNamelesson2 2A 闯关 goc电子课程htt…

MFC/C++学习系列之简单记录9——简单加法

MFC/C学习系列之简单记录9——简单加法 前言界面设计控件添加添加变量添加事件 后台代码总结 前言 基本的一些使用已经了解,那么就做个简单的加法来练手吧! 界面设计 控件添加 在工具箱中选择Edit control和Static Text两个控件,分别设置为…

AOP 面向切面编程的实现原理

AOP是基于IOC的Bean加载来实现的,所以理解Spring AOP的初始化必须要先理解Spring IOC的初始化。然后就能找到初始化的流程和aop对应的handler,即parseCustomElement方法找到parse aop:aspectj-autoproxy的handler(org.springframework.aop.config.AopNam…

VSCode搭建Java开发环境 2024保姆级安装教程(Java环境搭建+VSCode安装+运行测试+背景图设置)

名人说:一点浩然气,千里快哉风。—— 苏轼《水调歌头》 创作者:Code_流苏(CSDN) 目录 一、Java开发环境搭建二、VScode下载及安装三、VSCode配置Java环境四、运行测试五、背景图设置 很高兴你打开了这篇博客,更多详细的安装教程&…

【机器学习与数据挖掘实战】案例06:基于Apriori算法的餐饮企业菜品关联分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支,专注于让计算机系统通过数据学习和改进。它利用统计和计算方法,使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数据集中发现模式、关联…

Go怎么做性能优化工具篇之基准测试

一、什么是基准测试(Benchmark) 在 Go 中,基准测试是通过创建以 Benchmark 开头的函数,并接收一个 *testing.B 类型的参数来实现的。testing.B 提供了控制基准测试执行的接口,比如设置测试执行的次数、记录每次执行的…

vulnhub靶场【WhowWantsToBeKing】之1

前言 靶机:whowantstobeking-1,ip地址192.168.1.67 攻击:kali ,ip地址192.168.1.16 主机发现 使用arp-sacn -l或者netdiscover -r 192.168.1.1/24扫描 信息收集 使用nmap扫描端口 网站信息探测 访问80端口默认界面&#xff…

Java/JDK下载、安装及环境配置超详细教程【Windows10、macOS和Linux图文详解】

JAVA最新版JDK 23 安装教程详解 Java Development Kit (JDK) 23 是Oracle发布的最新长期支持版本 (LTS) 之一,它带来了许多新特性和改进。 本教程将详细介绍如何在Windows、macOS和Linux系统上安装JDK 23,并涵盖一些常见问题和解决方法。 一、 准备工作…

set的使用

文章目录 一、关联式容器二、set1、set的介绍2、set的使用2.1、元素的插入(insert接口)2.2、pair的简单讲解2.3、元素的查找(find接口)2.4、判断元素是否在set中(count接口)2.5、元素的删除(era…

[Xshell] Xshell的下载安装使用、连接linux、 上传文件到linux系统-详解(附下载链接)

前言 xshell 链接:https://pan.quark.cn/s/57062561e81a 提取码:TK4K 链接失效(可能被官方和谐)可评论或私信我重发 安装 下载后解压得到文件 安装路径不要有中文 打开文件 注意!360等软件会拦截创建注册表的行为&a…

基于蜂鸟视图的智慧可视化巡检管理系统研究

摘要 本文围绕蜂鸟视图研发的智慧可视化巡检管理系统展开研究,系统依托室内地图和室内定位技术,覆盖“规划、巡场、检查、上报”的完整业务流程。核心功能包括基于蓝牙定位的巡检点位置验证、可视化巡场地图的在线规划与导航、以及巡检路线轨迹的回放分析…

GUI07-学工具栏,懂MVC

MVC模式,是天底下编写GUI程序最为经典、实效的一种软件架构模式。当一个人学完菜单栏、开始学习工具栏时,就是他的一生中,最适合开始认识 MVC 模式的好时机之一。这节将安排您学习: Model-View-Controller 模式如何创建工具栏以及…