跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

DataX 二进制与源码部署及 DataX-Web 可视化平台搭建

DataX 的两种核心部署方式(二进制与源码编译),涵盖环境准备、Python 版本适配及动态传参配置。详细讲解了并发度设置策略(Channel、Bps、Tps)及其优先级。此外,还演示了 DataX-Web 可视化管理平台的二进制安装流程,包括数据库初始化、服务启动及日志查看,旨在构建企业级数据同步运维体系。

编程诗人发布于 2026/4/5更新于 2026/7/2252 浏览
DataX 二进制与源码部署及 DataX-Web 可视化平台搭建

一、二进制、源码方式安装

环境准备:

  • Linux 操作系统: DataX 部署在 Linux 上。
  • JDK(1.8 及其以上都可以,推荐 1.8): Oracle Java JDK。
  • Python(2 或者 3 都可以): 默认 Linux 上都会预装 python2。RedHat 的 yum 镜像没有 python3,CentOS 的 yum 镜像是可以直接安装 python3 的。
  • Apache Maven 3.x(只有源码编译安装需要): Apache Maven。
1.1 二进制方式安装
  1. 进入 GitHub 官网的 DataX 主页,下拉到'Quick Start'部分,然后下载。
  2. 安装 data 所需的 jdk 依赖包。
  3. 登录到 Linux 服务器,解压 DataX 安装包到指定的目录下。
  4. 通过 DataX 提供的自测脚本,通过 python 命令测试一下能不能正常启动一个同步任务。

注意: DataX 这个项目本身是用 Python2.7 进行开发的,因此需要使用 Python2.7 的版本进行执行。

常见问题:

  • 问题描述: 如果执行自检程序出现错误。
  • 解决方案: 将 plugin 目录下的所有的以 _ 开头的文件都删除即可。
1.2 源码方式安装

安装步骤参考官方 GitHub 详细介绍:DataX 源码方式安装

  1. 下载 DataX 源码。
  2. 通过 maven 打包。如果打包成功,日志显示如下: 打包成功后的 DataX 包位于 {DataX_source_code_home}/target/datax/datax/,结构如下:

二、Python 3 支持

DataX 这个项目本身是用 Python2.7 进行开发的,因此建议使用 Python2.7 的版本进行执行。如果使用 python3 执行的话,可能会出现问题,因为 3 和 2 的语法差异还是比较大的。

如果需要使用 python3 去执行数据同步的计划,需要修改 bin 目录下的三个 py 文件,将这三个文件中的如下部分修改即可:

Python 2 升级到 Python 3 时必须修改的两个核心语法变化——print 从语句变为函数,异常捕获语法从逗号改为 as 关键字:

print xxx 替换为 print(xxx)           ### 打印语法变更
Exception, e 替换为 Exception as e    ### 异常捕获语法变更

同样的,通过 DataX 提供的自测脚本,通过 python3 命令测试一下能不能正常启动一个同步任务。 虽然 python3 的语法变更,但是也向下兼容,同样可以使用 python2 执行。

三、DataX 动态传参

DataX 同步数据的时候需要使用到自己设置的配置文件,其中可以定义同步的方案,通常为 json 的格式。在执行同步方案的时候,json 文件中的 channel、password、username 等等都是静态的参数数据,有些场景下需要有一些动态的数据。

例如:将 MySQL 的数据同步到 HDFS,多次同步的时候只是表的名字和字段不同。比如 MySQL 中有一个订单表 orders 需要同步到 HDFS 中,那么第一次同步肯定是全量同步,将数据全量同步到今天,比如今天的日期是 2025-06-30,之后的每天每时每秒订单表都在产生新的数据,那么之后就没有必要进行全量同步,只需要进行增量同步,如果在 json 文件写了 where 条件,比如 where date='2025-07-01',那么是进行了增量同步,但之后的每一天都需要修改这个 where 条件,非常的不智能。因此就需要使用到动态传参,让增量同步的 where 条件变的智能,自动进行调整。

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

这些时候,如果我们每一次都去写一个新的 json 文件将会非常麻烦,此时我们就可以使用 动态传参。 所谓的动态传参,就是在 json 的同步方案中,使用类似变量的方式来定义一些可以改变的参数。在执行同步方案的时候,可以指定这些参数具体的值。

3.1 动态传参的案例

在使用到同步方案的时候,可以使用 -D 来指定具体的参数的值。例如在上述的 json 中,我们设置了一个参数 TIMES,在使用的时候,可以指定 TIMES 的值,来动态的设置 sliceRecordCount 的值。

四、并发设置

在 DataX 的处理流程中,Job 会被划分成为若干个 Task 并发执行,被不同的 TaskGroup 管理。在每一个 Task 的内部,都由 reader -> channel -> writer 的结构组成,其中 channel 的数量决定了并发度。那么 channel 的数量是怎么指定的?

  • 直接指定 channel 数量
  • 通过 Bps 计算 channel 数量
  • 通过 tps 计算 channel 数量

下面对三种计算 channel 数量的方式进行一一介绍:

4.1 直接指定 channel 数量

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

在 json 文件中,指定 channel 数量的配置如下:

说明: DataX 中默认一个 TaskGroup(任务组) 的并发数量为 5,也就是 channel,相关参数的定义在 conf 目录下的 core.json 文件中。可以看到如下分配了 10 个并发,每个并发都由 reader -> channel -> writer 的结构组成,10 个 task 分成了 2 个 TaskGroup(taskGroupId=[0]、taskGroupId=[1]),然后不同的 TaskGroup 下通过 task 执行(taskGroup[0] taskId[5]、taskGroup[1] taskId[0]…)。

对上述的日志进行分析:一个 Job 被拆分成了两个任务组。因为 DataX 中默认一个 TaskGroup(任务组) 的并发数量为 5,也就是 channel,因此为了满足 10 个通道的需求,自动创建 2 个任务组。

用建筑工地比喻这个场景,整个工程(Job):要搬 10 堆砖(10 个任务),有 10 个工人(10 个通道)。但工头决定:工地 A(任务组 0):派 5 个工人,负责搬砖堆 1-5;工地 B(任务组 1):派 5 个工人,负责搬砖堆 6-10。 两个工地同时开工,互不干扰!

4.2 通过 Bps 计算 channel 数量

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

  • Job Bps: 对一个 Job 进行整体的限速,可以通过 job.setting.speed.byte 进行设置(单位字节)。
  • channel Bps: 对单个 channel 的限速,可以通过 core.transport.channel.speed.byte 进行设置(单位字节)。
  • 注意: 和上面的 Job Bps 必须同时设置。

在 json 文件中,指定 Job Bps 的配置如下:

在 json 文件中,指定 channel Bps 的配置如下,需要注意 core 和 job 是平级参数。

说明: DataX 中默认一个 TaskGroup(任务组) 的并发数量为 5,也就是 channel,相关参数的定义在 conf 目录下的 core.json 文件中。根据计算公式(channel=500/50)看到如下分配了 10 个并发,每个并发都由 reader -> channel -> writer 的结构组成,10 个 task 分成了 2 个 TaskGroup(taskGroupId=[0]、taskGroupId=[1]),然后不同的 TaskGroup 下通过 task 执行(taskGroup[0] taskId[2]、taskGroup[1] taskId[6]…)。

4.3 通过 tps 计算 channel 数量

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

  • Job tps: 对一个 Job 进行整体的限速,可以通过 job.setting.speed.record 进行设置(单位每秒传输 N 条数据)。
  • channel tps: 对单个 channel 的限速,可以通过 core.transport.channel.speed.record 进行设置(单位每秒传输 N 条数据)。
  • 注意: 和上面的 Job tps 必须同时设置。

在 json 文件中,指定 Job tps 的配置如下:

在 json 文件中,指定 channel tps 的配置如下,需要注意 core 和 job 是平级参数。

说明: DataX 中默认一个 TaskGroup(任务组) 的并发数量为 5,也就是 channel,相关参数的定义在 conf 目录下的 core.json 文件中。根据计算公式(channel=500/100)看到如下分配了 5 个并发,每个并发都由 reader -> channel -> writer 的结构组成,5 个 task 分成了 1 个 TaskGroup(taskGroupId=[0]),然后不同的 TaskGroup 下通过 task 执行(taskGroup[0] taskId[0]、taskGroup[0] taskId[1]…)。

4.4 优先级说明

如果同时配置了 Bps 和 tps 限制,以小的为准。只有在 Bps 和 tps 都没有配置的时候,才会以 channel 数量配置为准。

在 json 文件中,同时配置了直接指定 channel 数量、通过 Bps 计算 channel 数量、通过 tps 计算 channel 数量这三种方式。

说明: DataX 中默认一个 TaskGroup(任务组) 的并发数量为 5,也就是 channel,相关参数的定义在 conf 目录下的 core.json 文件中。根据优先级并发将采用'通过 tps 计算 channel 数量',原因参考上面的优先级。根据计算公式(channel=500/100)看到如下分配了 5 个并发,每个并发都由 reader -> channel -> writer 的结构组成,5 个 task 分成了 1 个 TaskGroup(taskGroupId=[0]),然后不同的 TaskGroup 下通过 task 执行(taskGroup[0] taskId[2]、taskGroup[0] taskId[1]…)。

五、二进制、源码方式部署 DataX-Web

环境准备:

  • 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 方式来做自定义的改造。
5.1 二进制方式安装
  1. 进入 GitHub 官网的 DataX-Web 主页:https://github.com/WeiYe-Jing/datax-web。下拉到'Quick Start'部分,点击'一键部署',然后就进入到了 DataX-Web 的安装部署文档界面。下载官方提供的版本 tar 版本包。

  2. 在安装部署前先部署 MySQL 数据库。datax-web 需要将一些元数据信息保存到数据库。MySQL 的安装部署可以自行安装。

  3. 登录到 Linux 服务器,解压 Data-Web 包,和 datax 部署在一个目录下。 /data/DataX 是 datax 软件的安装目录,将 Data-Web 部署和 datax 在一个目录下。

  4. 执行一键安装脚本。 进入解压后的目录,找到 bin 目录下面的 install.sh 文件,进行交互式安装,则直接执行。 如果你的服务上安装有 mysql 命令,在执行安装脚本的过程中则会出现以下提醒。按照提示输入数据库地址,端口号,用户名,密码以及数据库名称;并且 datax-web 需要将一些元数据信息保存到数据库中,按照提示执行 datax_web.sql 数据库初始化脚本。

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

    进入到 MySQL 数据库中,查看创建的数据库。

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

  5. 配置邮件服务 (可跳过)。 在项目目录(/data/DataX/datax-web-2.1.2/)下/modules/datax-admin/bin/env.properties 配置邮件服务。data-web 提供了失败告警功能,如果某一个任务执行失败,可以通过配置的邮件服务给指定邮箱发送一封'执行失败'的邮件。

  6. 指定 PYTHON_PATH 的路径。

  7. 一键启动和一键关闭 DataX-Web 服务。 一键启动所有服务: 中途可能发生部分模块启动失败或者卡住,可以退出重复执行,如果需要改变某一模块服务端口号,则 vi ./modules/{module_name}/bin/env.properties 找到 SERVER_PORT 配置项,改变它的值即可。当然也可以单一地启动某一模块服务:./bin/start.sh -m {module_name}

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

  8. 查看服务。 在 Linux 环境下使用 JPS 命令,查看是否出现 DataXAdminApplication 和 DataXExecutorApplication 进程,如果存在这表示项目运行成功。 如果项目启动失败,请检查启动日志:modules/datax-admin/bin/console.out 或者 modules/datax-executor/bin/console.out。 注意: 脚本使用的都是 bash 指令集,如若使用 sh 调用脚本,可能会有未知的错误。

  9. 运行。 部署完成后,在浏览器中输入 http://ip:port/index.html 就可以访问对应的主界面(ip 为 datax-admin 部署所在服务器 ip,port 为 datax-admin 指定的运行端口,默认 9527)。 输入用户名 admin 密码 123456 就可以直接访问系统。

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

5.2 编译打包安装

安装步骤参考官方 GitHub 详细介绍:DataX-Web 编译打包方式安装

  1. 编译打包(官方提供的 tar 包跳过)。 直接从 Git 上面获得源代码,在项目的根目录下执行如下命令。 执行成功后将会在工程的 build 目录下生成安装包。

目录

  1. 一、二进制、源码方式安装
  2. 1.1 二进制方式安装
  3. 1.2 源码方式安装
  4. 二、Python 3 支持
  5. 三、DataX 动态传参
  6. 3.1 动态传参的案例
  7. 四、并发设置
  8. 4.1 直接指定 channel 数量
  9. 4.2 通过 Bps 计算 channel 数量
  10. 4.3 通过 tps 计算 channel 数量
  11. 4.4 优先级说明
  12. 五、二进制、源码方式部署 DataX-Web
  13. 5.1 二进制方式安装
  14. 5.2 编译打包安装
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 导师都夸的论文效率!这几款专业 AI论文写作软件太顶了
  • DankDroneDownloader:大疆无人机固件自由下载终极指南
  • 未来哪些行业与岗位面临机器人替代风险?
  • 字节跳动前端一面深度解析:React 原理与浏览器渲染
  • OpenClaw 本地部署指南:从零搭建可控 AI Agent 框架
  • 赛博塔罗 Java 与前端实现方案
  • 2026 年主流 AI 辅助编程工具盘点与选择指南
  • Stable Diffusion 3.5 云端部署与持久化存储指南
  • 从 0 到 1 打造 RISC-V 智能家居中控:硬件、固件与通信全链路实战
  • Python 开发者如何利用心理洞察突破 AI 需求预测局限
  • 当 AI 接管研发流程,传统工程师的天花板在哪?未来 2 年软件工程发展预判
  • C++ 指针与引用核心面试题解析
  • OpenClaw 本地 AI 助手安装、配置与钉钉接入指南
  • Effective C++ 读书笔记:C++ 编程习惯与最佳实践
  • GitHub Copilot 代码生成工具简介
  • DeepSeek 在主流云电脑平台的部署体验对比
  • Z-Image i2L本地离线文生图体验
  • 香山 RISC-V 处理器 FPGA 原型构建实战指南与核心技术
  • AIGC 产品经理面试指南:从 0 到 1 的核心能力与考点拆解
  • C/C++ 基础排序算法汇总

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online