DataX 与 DataX-Web关系简介
DataX 与 DataX-Web 完整学习笔记本笔记涵盖阿里巴巴开源离线数据同步工具 DataX 及其可视化平台 DataX-Web 的核心概念、架构设计、安装部署与实战操作。一、DataX 概述1.1 什么是 DataXDataX 是阿里巴巴集团内被广泛使用的离线数据同步工具致力于实现包括关系型数据库MySQL、Oracle、SQLServer、PostgreSQL等、HDFS、Hive、HBase、ClickHouse、MongoDB等各种异构数据源之间稳定高效的数据同步功能。DataX 是阿里云 DataWorks 数据集成服务的开源版本在阿里巴巴内部已持续稳定运行多年目前每天完成同步8万多道作业每日传输数据量超过300TB。1.2 核心设计理念为了解决异构数据源同步问题DataX 将复杂的网状同步链路变成了星型数据链路DataX 作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源时只需将此数据源对接到 DataX便能跟已有的数据源做到无缝数据同步。传统模式数据源之间两两连接N个数据源需要 N×(N-1) 个连接 DataX模式所有数据源只需连接DataXN个数据源仅需 N 个连接1.3 框架设计DataX 采用 Framework Plugin 架构构建组件 功能描述Reader 数据采集模块负责从源端读取数据发送给 FrameworkWriter 数据写入模块从 Framework 取数据并写入目的端Framework 连接 Reader 和 Writer处理缓冲、流控、并发、数据转换等1.4 核心架构组件┌─────────────────────────────────────────────────────────┐ │ DataX Job │ │ (单个同步作业的中枢管理节点负责任务切分与管理) │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ Task 切分 │ │ 根据源端特性将Job切分成多个小的Task最小执行单元 │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ TaskGroup 组装 │ │ 将Task重新组合成TaskGroup每个TaskGroup以配置的并发运行 │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ Reader → Channel → Writer │ │ 每个Task启动固定线程完成数据同步 │ └─────────────────────────────────────────────────────────┘调度流程示例用户提交一个DataX作业配置20个并发需要同步100张分表DataX Job 根据分库分表切分成 100个 Task根据20个并发计算需要分配 4个 TaskGroup4个 TaskGroup 平分100个 Task每个负责以5个并发运行25个 Task二、DataX 核心特性2.1 六大核心优势特性 说明可靠的数据质量监控 支持强数据类型转换、作业全链路流量监控、脏数据精确过滤丰富的数据转换功能 支持数据脱敏、补全、过滤提供自动groovy函数精准的速度控制 支持通道并发、记录流、字节流三种流控模式强劲的同步性能 单机多线程执行速度随并发线性增长健壮的容错机制 支持线程级、作业级多层次重试极简的使用体验 下载即可用支持Linux和Windows2.2 支持的插件体系类型 数据源RDBMS MySQL、Oracle、SQLServer、PostgreSQL、DRDS、达梦阿里云数仓 ODPS、ADS、OSS、OCSNoSQL OTS、HBase、MongoDB大数据 Hive、HDFS无结构化 TxtFile、FTP搜索引擎 Elasticsearch2.3 DataX 的劣势与限制劣势/限制 详细说明 弥补方案实时性差 基于 SELECT SQL 查询只能定时运行无法实现秒级延迟 DataX(全量) Canal/Debezium(增量) 组合增量同步能力弱 需依赖时间戳或自增ID字段无法自动捕获删除操作 使用 binlog 监听工具对源库造成压力 大规模 SELECT 占用源库 IO 和 CPU 从只读从库同步 限流设置缺乏数据一致性快照 分片并发读取各分片查询时间点有差异 业务逻辑容忍或使用其他工具生态系统单一 仅关注数据通道缺乏高级功能 嵌入 DolphinScheduler、Airflow 等调度系统无状态管理 任务执行完毕不自动记录同步位置 外部化状态管理调度系统传递参数2.4 适用场景与选型建议✅ 适用场景· 数据仓库初始化/全量数据迁移· 离线 T1 数据同步每天同步一次昨日增量数据· 定期数据备份❌ 不适用场景· 实时数据同步需要秒级/毫秒级延迟· 复杂的 ETL 流程需要多表关联、复杂计算· 要求严格一致性的同步三、DataX 快速上手3.1 JSON 配置文件示例以下是一个 MySQL 到 MySQL 的同步配置{job:{content:[{reader:{name:mysqlreader,parameter:{username:root,password:root,column:[id,name],connection:[{table:[user],jdbcUrl:[jdbc:mysql://源IP:3306/mytest]}]}},writer:{name:mysqlwriter,parameter:{writeMode:insert,username:root,password:root,column:[id,name],connection:[{table:[user],jdbcUrl:jdbc:mysql://目标IP:3306/mytest}]}}}],setting:{speed:{channel:5,byte:1048576,record:10000}}}}3.2 执行命令python datax.py job.json四、DataX-Web 概述4.1 什么是 DataX-WebDataX Web 是在 DataX 之上开发的分布式数据同步工具提供简单易用的操作界面降低用户使用 DataX 的学习成本缩短任务配置时间避免配置过程中出错。 核心关系理解如果把 DataX 比作汽车的发动机那么 DataX-Web 就是驾驶舱——它让你通过方向盘和按钮来驾驶而不是直接去操作发动机。4.2 核心功能特性功能模块 具体能力可视化操作 通过页面选择数据源即可创建同步任务无需手写JSON多数据源支持 RDBMS、Hive、HBase、ClickHouse、MongoDB等批量任务创建 RDBMS数据源可批量创建数据同步任务实时监控 实时查看数据同步进度及日志支持终止同步分布式调度 集成并二次开发 XXL-JOB支持集群部署增量同步 支持根据时间戳、自增主键进行增量同步任务调度 支持定时任务、超时控制、失败重试、失败告警执行器监控 支持CPU、内存、负载监控4.3 DataX-Web 功能清单30项核心功能通过 Web 构建 DataX JSON 配置JSON 保存在数据库方便任务迁移和管理Web 实时查看抽取日志类似 Jenkins 控制台页面操作停止 DataX 作业支持 DataX 定时任务动态修改任务状态调度能力调度采用中心式设计支持集群部署任务分布式执行执行器支持集群部署执行器周期性自动注册丰富路由策略第一个、最后一个、轮询、随机、一致性HASH等阻塞处理策略单机串行、丢弃后续调度、覆盖之前调度任务超时控制自动中断超时任务任务失败重试自定义重试次数任务失败告警邮件可扩展短信、钉钉任务依赖支持配置子任务依赖管理与扩展用户管理管理员和普通用户角色运行报表调度日期分布图、成功率分布图支持指定增量字段自动获取数据区间页面配置 DataX 启动 JVM 参数数据源配置支持手动测试任务模板功能Hive 数据源支持通过环境变量获取 DataX 文件目录动态参数配置指定 Hive 分区扩展任务类型Shell、Python、PowerShell 任务HBase 数据源支持MongoDB 数据源支持执行器 CPU、内存、负载监控页面提供 24 类插件 JSON 配置样例公共字段自动填充Swagger 接口 token 验证项目管理模块对任务分类管理RDBMS 批量任务创建ClickHouse 数据源支持增量抽取增加主键自增方式数据源信息加密五、DataX-Web 安装部署5.1 环境要求组件 版本要求JDK 1.8推荐 OpenJDK 11MySQL 5.7用于存储任务配置Python 2.7DataX 核心依赖Maven 3.6源码编译需要DataX v3.0⚠️ Python 版本注意原生 DataX 依赖 Python 2.7。如果使用 Python 3需要用项目提供的补丁文件替换 DataX 的启动脚本。5.2 安装步骤方式一使用官方 tar 包# 1. 下载安装包wgethttps://github.com/WeiYe-Jing/datax-web/releases/...# 2. 解压tar-zxvfdatax-web-{VERSION}.tar.gz# 3. 进入目录cddatax-web-{VERSION}# 4. 执行一键安装脚本交互式./bin/install.sh# 或非交互式./bin/install.sh--force方式二源码编译# 克隆源码gitclone https://github.com/WeiYe-Jing/datax-web.git# 编译打包mvn cleaninstall# 编译成功后在 build 目录下生成安装包# build/datax-web-{VERSION}.tar.gz5.3 数据库初始化# 方式一通过安装脚本自动初始化# 方式二手动执行SQL脚本# 执行 bin/db 下面的 datax_web.sql 文件mysql-uroot-p./bin/db/datax-web.sql5.4 配置文件修改修改 datax-admin 配置 application.ymlserver:port:8080spring:datasource:username:root password:your_password url:jdbc:mysql://localhost:3306/datax_web?serverTimezoneAsia/ShanghaiuseSSLfalsedriver-class-name:com.mysql.jdbc.Driverlogging:path:./data/applogs/admin修改 datax-executor 配置 application.ymldatax:job:admin:addresses:http://127.0.0.1:8080# admin 服务地址executor:appname:datax-executor# 执行器唯一标识port:9999# 执行器端口logpath:./data/applogs/executor/jobhandler logretentiondays:30executor:jsonpath:/path/to/datax/json# DataX JSON 临时文件路径pypath:/path/to/datax/bin/datax.py# DataX 启动脚本路径5.5 启动服务# 启动所有服务./bin/start-all.sh# 分别启动推荐便于观察启动顺序./bin/start.sh-mdatax-admin# 先启动 admin./bin/start.sh-mdatax-executor# 再启动 executor# 停止所有服务./bin/stop-all.sh5.6 访问界面浏览器访问http://localhost:8080/index.html#/dashboard 默认用户名admin 默认密码123456六、DataX-Web 使用指南6.1 操作流程概览创建数据源 → 创建项目 → 创建任务模板 → 任务构建 → 任务调度 → 监控日志6.2 详细操作步骤Step 1: 创建数据源登录 DataX-Web 控制台进入数据源管理模块点击新增数据源填写连接信息· 数据源名称· 数据源类型MySQL、Oracle、Hive等· JDBC URL· 用户名/密码点击测试连接验证配置⚠️ 注意在创建数据源之前建议先把数据表或集合创建好否则后续任务构建时可能找不到字段。Step 2: 创建项目进入项目管理模块点击新建项目填写项目名称和描述对任务进行分类管理Step 3: 创建任务模板进入任务模板模块点击新增模板配置模板参数可设置定时调度策略保存模板供后续复用Step 4: 任务构建JSON生成DataX-Web 提供可视化 JSON 构建功能通过4步完成步骤 操作内容① 构建 Reader 选择源数据源、表、字段② 构建 Writer 选择目标数据源、表、写入模式③ 字段映射 配置源字段到目标字段的映射关系④ 生成 JSON 系统自动生成完整配置可复制或保存Step 5: 任务管理与调度进入任务管理模块选择任务将状态改为启动可执行以下操作· 立即执行手动触发一次· 定时调度配置 Cron 表达式自动执行· 停止任务终止运行中的 DataX 进程· 查看日志实时查看执行日志6.3 增量同步配置DataX-Web 支持两种增量同步模式模式 配置要点时间戳增量 指定时间字段如 update_time系统自动记录上次同步时间自增主键增量 指定 ID 字段系统自动记录上次最大 ID原理系统在每次任务成功后自动记录 checkpoint最大 ID 值或最新时间下次调度时自动作为参数注入形成闭环。七、DataX vs DataX-Web 对比维度 DataX DataX-Web操作方式 手动编写 JSON 配置文件命令行执行 可视化界面表单配置任务管理 JSON 文件零散存储 保存在数据库统一管理调度能力 无内置调度依赖 crontab 等外部工具 内置分布式调度基于 XXL-JOB监控告警 仅输出日志需人工查看 可视化监控 邮件/钉钉告警学习成本 高需熟悉 JSON 配置语法 低界面化操作集群部署 需自行实现 原生支持执行器集群适用场景 技术人员一次性迁移或脚本集成 企业级需要可视化管理、多团队协作八、常见问题与解决方案8.1 执行器地址为空现象执行任务时提示执行器地址为空解决方案确保执行器已正确注册按顺序重启服务./stop-all.sh ./start.sh-mdatax-admin# 先启动 admin# 等待 admin 完全启动./start.sh-mdatax-executor# 再启动 executor8.2 Python 环境问题现象DataX 任务执行失败Python 相关错误解决方案· 确保 Python 2.7 已安装· 如果使用 Python 3需要替换启动脚本补丁· 检查 env.properties 中的 PYTHON_PATH 配置8.3 数据源连接测试失败常见原因· JDBC URL 格式不正确注意时区参数· 防火墙未开放端口· 数据库用户权限不足九、参考资源官方地址· DataX GitHubhttps://github.com/alibaba/DataX· DataX-Web GitHubhttps://github.com/WeiYe-Jing/datax-web· DataX-Web UIhttps://github.com/WeiYe-Jing/datax-web-ui学习建议先掌握 DataX 基础概念和 JSON 配置格式本地搭建 DataX 环境手动执行一个同步任务再安装 DataX-Web体验可视化操作结合实际业务场景配置定时增量同步任务 补充说明DataX-Web 底层完全依赖于 DataX 执行数据同步任务两者关系类似于前台界面与后台引擎。因此学习时建议先理解 DataX 的核心原理再使用 DataX-Web 提升效率。

相关新闻