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

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

DataX 支持二进制和源码编译两种部署方式。二进制部署需准备 JDK 和 Python 环境,解压后通过自测脚本验证;源码编译需 Maven 打包。Python 3 支持需修改 bin 目录下三个 py 文件以适配语法差异。动态传参通过-D 参数实现,适用于增量同步场景。并发度可通过直接指定 channel 数量、Bps 或 tps 计算,优先级为 tps>Bps>channel 数。DataX-Web 可视化平台支持一键部署,需配置 MySQL 数据库,提供统一调度与监控功能。

无尘发布于 2026/4/8更新于 2026/7/2433 浏览
DataX 二进制与源码部署及 DataX-Web 可视化平台搭建

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:只有源码编译安装需要。

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 文件,将这三个文件中的如下部分修改即可:

  • print 从语句变为函数: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 数量的配置示例如下:

"setting": {
    "speed": {
        "channel": 10
    }
}

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 的配置示例如下:

"setting": {
    "speed": {
        "byte": 500000000
    }
}

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

"core": {
    "transport": {
        "channel": {
            "speed": {
                "byte": 50000000
            }
        }
    }
}

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 的配置示例如下:

"setting": {
    "speed": {
        "record": 500
    }
}

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

"core": {
    "transport": {
        "channel": {
            "speed": {
                "record": 100
            }
        }
    }
}

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):必选,主要用于调度执行底层 DataX 的启动脚本,默认的方式是以 Java 子进程方式执行 DataX,用户可以选择以 Python 方式来做自定义的改造。支持 Python3 需要修改替换 datax/bin 下面的三个 python 文件,替换文件在 doc/datax-web/datax-python3 下。

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。
  5. 进入到 MySQL 数据库中,查看创建的数据库。
  6. 如果服务上并没有安装 mysql 命令,则可以取用目录下 ./bin/db/datax-web.sql 脚本去手动执行,完成后修改相关配置文件。按照提示输入数据库地址,端口号,用户名,密码以及数据库名称。
  7. 配置邮件服务 (可跳过)。在项目目录(/data/DataX/datax-web-2.1.2/)下/modules/datax-admin/bin/env.properties 配置邮件服务。data-web 提供了失败告警功能,如果某一个任务执行失败,可以通过配置的邮件服务给指定邮箱发送一封'执行失败'的邮件。
  8. 指定 PYTHON_PATH 的路径。
  9. 一键启动和一键关闭 DataX-Web 服务。
    • 一键启动所有服务:中途可能发生部分模块启动失败或者卡住,可以退出重复执行,如果需要改变某一模块服务端口号,则 vi ./modules/{module_name}/bin/env.properties 找到 SERVER_PORT 配置项,改变它的值即可。当然也可以单一地启动某一模块服务:./bin/start.sh -m {module_name}。
    • 一键取消所有服务:当然也可以单一地停止某一模块服务:./bin/stop.sh -m {module_name}。
  10. 查看服务(注意!注意!)。在 Linux 环境下使用 JPS 命令,查看是否出现 DataXAdminApplication 和 DataXExecutorApplication 进程,如果存在这表示项目运行成功。如果项目启动失败,请检查启动日志:modules/datax-admin/bin/console.out 或者 modules/datax-executor/bin/console.out。注意:脚本使用的都是 bash 指令集,如若使用 sh 调用脚本,可能会有未知的错误。
  11. 运行。部署完成后,在浏览器中输入 http://ip:port/index.html 就可以访问对应的主界面(ip 为 datax-admin 部署所在服务器 ip,port 为 datax-admin 指定的运行端口,默认 9527)。输入用户名 admin 密码 123456 就可以直接访问系统。
  12. 运行日志。部署完成之后,在 modules/对应的项目/data/applogs 下 (用户也可以自己指定日志,修改 application.yml 中的 logpath 地址即可),用户可以根据此日志跟踪项目实际启动情况。如果执行器启动比 admin 快,执行器会连接失败,日志报'拒绝连接'的错误,一般是先启动 admin,再启动 executor,30 秒之后会重连,如果成功请忽略这个异常。

5.2 编译打包安装

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

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

目录

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

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

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

更多推荐文章

查看全部
  • 奥迪 A6/A7 CarPlay 激活与 8511 地图安装指南
  • Ubuntu 22.04 基于 ROS2 Humble 搭建 PX4 无人机仿真环境
  • 结构化的力量:ChatGPT 如何实现高效信息管理
  • AES CCM 算法的 FPGA/Verilog 实现
  • ChatGPT、Gemini 及 Spotify 教育版身份验证自动化方案
  • phpStudy 下载与安装教程
  • Java volatile 关键字详解:原理、场景与误区
  • OpenViking 部署与应用:字节跳动开源 AI 代理上下文数据库
  • AI 时代内存需求暴涨背后的能源隐私与绿色技术解析
  • GitHub Copilot 接入 Figma MCP 实现设计稿转前端代码
  • VibeThinker-1.5B-APP:小模型在编程与数学推理中的优势与部署
  • AI 技能 UI UX Pro Max 驱动的现代前端 UI 工作流
  • ComfyUI 云服务器部署实战与优化指南
  • 使用 UI UX Pro Max 构建现代前端 UI 工作流
  • Linux 基础入门:常用命令与系统管理指南
  • JavaScript 语言特性与常见误解分析
  • CosyVoice 安装 openai-whisper 报错:ModuleNotFoundError: No module named 'pkg_resources'
  • Python 爬虫实战:爬取国家统计局公开数据
  • 2026 年 2 月 5 日 AI、通信与安全前沿日报
  • Linux C++ 实战:基于 gRPC 编写同步 Server 与 Client

相关免费在线工具

  • 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