ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

DataX-Web V2.1.1 Linux 环境部署实战指南:依赖安装、源码编译与双服务联调

DataX-Web V2.1.1 Linux 环境部署实战指南:依赖安装、源码编译与双服务联调 数据集成数据同步任务调度后端【免费下载链接】datax-webDataX集成可视化页面选择数据源即可一键生成数据同步任务支持RDBMS、Hive、HBase、ClickHouse、MongoDB等数据源批量创建RDBMS数据同步任务集成开源调度系统支持分布式、增量同步数据、实时查看运行日志、监控执行器资源、KILL运行进程、数据源信息加密等。项目地址https://gitcode.com/gh_mirrors/da/datax-web点击查看免费下载DataX-Web 是针对阿里巴巴 DataX 同步工具开发的可视化解决方案用户可在 Web 端完成数据源配置、任务创建、任务调度与运行日志查看。本文以当前仓库datax-web 项目中 datax-web-deploy-V2.1.1.md 部署文档为核心骨架结合仓库源码与配置文件系统讲解在 Linux 环境下从零部署 DataX-Web V2.1.1 的完整链路环境依赖准备JDK、Maven、Python、MySQL、DataX、Tomcat、datax-admin 与 datax-executor 两个核心组件的配置修改、Maven 编译打包、nohup 后台启动以及浏览器访问验证。读完本文你将掌握一套可复现、可排错的 DataX-Web 单机部署方案并理解日志路径、JSON 临时文件路径、Python 脚本路径三大关键配置项与DATAX_HOME环境变量的优先级关系。一、部署前必须理清的整体架构DataX-Web 采用“调度中心 执行器”的两段式架构这一点在官方部署文档中反复出现也与仓库模块划分完全一致datax-admin负责 UI 界面与接口层承接 Web 前端操作、数据源管理、任务管理与调度决策需要连接 MySQL 数据库存放用户信息与任务信息datax-executor负责实际拉起 DataX 进程执行同步任务需要配置 datax-admin 发布地址、执行器端口、自身日志位置以及 DataX 的datax.py脚本位置。两者之间的联动关系是datax-executor 启动后会自动向 datax-admin 注册执行器。从源码看这一逻辑由 ExecutorRegistryThread.java 中的后台线程实现执行器启动后进入while (!toStop)循环构造携带appName、address、CPU 使用率、内存使用率、系统负载的RegistryParam周期性地调用adminBiz.registry(registryParam)向调度中心上报自身信息并在成功后break跳出循环。因此如果 datax-admin 的地址或端口配置错误执行器将无法完成注册任务也就无法被调度执行。部署文档中特别强调的一个细节是datax-executor 配置的admin.addresses端口必须与 datax-admin 实际发布端口完全一致否则执行器无法正确注册——这与上述源码逻辑完全对应。二、依赖资源清单根据部署文档搭建 DataX-Web V2.1.1 需要准备以下依赖依赖版本建议用途DataX官方部署包即可DataX-Web 的核心执行资源包JDK1.8.201 以上运行 jar 包Maven需支持编译 Java 8 项目编译 datax-web 源码生成 jarPython推荐 2.7Python 3 需修改 DataX 相关配置调度执行 DataX 启动脚本Tomcat可不装文中作为备用承载方案MySQL5.7 或 8.0存放 datax-web 用户信息与任务信息值得说明的是部署文档提到“jar 包需要承载在 tomcat 中运行直接用 java 运行 jar 包会报错先暂且装上 tomcat”。实际使用中本文后续第七节直接采用nohup java -jar方式启动即可成功运行Tomcat 属于可选安装项可按文档标注“可不装”处理。三、基础环境安装Java / Tomcat / MySQL 8.0 / Python / DataX / Maven如果服务器上相关环境已经就绪可以直接跳到本文“七、部署 datax-web”章节否则按顺序执行以下步骤。3.1 安装 JavaJDK 1.8先查找可用 JDK 包yum -y list java* yum search jdk安装 OpenJDK 1.8yum install java-1.8.0-openjdk.x86_64验证安装java -version通过 yum 安装的默认路径为/usr/lib/jvm。将该路径写入环境变量编辑/etc/profile在文件末尾追加#set java environment JAVA_HOME/usr/lib/jvm/jre-1.6.0-openjdk.x86_64 PATH$PATH:$JAVA_HOME/bin CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME CLASSPATH PATH注意上例中JAVA_HOME指向jre-1.6.0请务必替换为你实际安装的 JDK 1.8 目录名如/usr/lib/jvm/java-1.8.0-openjdk.x86_64。使配置生效.与/etc/profile之间必须有空格. /etc/profile3.2 安装 Tomcat可选yum -y install tomcat查看与启动服务systemctl status tomcat systemctl start tomcat开机自启动可按需另行配置。若最终采用第七节的java -jar直启方式本步骤可完全跳过。3.3 安装 MySQL 8.0先更新系统软件包可选网络条件好时可执行sudo yum update添加 Yum 仓库包两个下载源任选其一wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm # 或 wget http://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm安装发行包与社区版 Serversudo rpm -ivh mysql80-community-release-el7-1.noarch.rpm sudo yum -y install mysql-community-server启动守护进程并检查状态与版本sudo systemctl start mysqld sudo systemctl status mysqld mysql -V修改 root 初始密码。MySQL 安装过程中为 root 生成的临时密码保存在/var/log/mysqld.log中sudo grep temporary password /var/log/mysqld.log进入客户端修改密码注意SQL 语句结尾必须带分号;否则 MySQL 不会执行mysql -u root -pALTER USER rootlocalhost IDENTIFIED BY your password;MySQL 8 默认密码强度要求不少于 12 个字符必须包含大写字母、小写字母、数字和特殊字符。配置远程访问。默认情况下 root 仅允许 localhost 访问为了后续用 Navicat 等工具初始化数据库可执行以下授权mysql -u root -p;use mysql; select host, user, authentication_string, plugin from user; GRANT ALL ON *.* TO root%; update user set host % where user root; ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY root; FLUSH PRIVILEGES;按CTRLD退出 MySQL 编辑模式。如果远程仍无法连接检查防火墙是否放行 3306 端口systemctl status firewalld firewall-cmd --query-port3306/tcp firewall-cmd --add-port3306/tcp --permanent firewall-cmd --reload firewall-cmd --query-port3306/tcp当数据库工具可以正常连接时MySQL 配置完成。3.4 Python 安装Linux 通常自带 Python直接在命令行输入python即可查看版本若未安装自行安装即可。部署文档明确推荐 Python 2.7并指出“Python 3 需要修改 DataX 相关配置”。当前仓库的 doc/datax-web/datax-python3 目录下提供了datax.py、dxprof.py、perftrace.py三个 Python 3 兼容脚本可作为替换datax/bin下同名文件的可选方案。从源码调用链看执行器最终是以python datax.py job.json子进程方式拉起 DataX 的见 BuildCommand.java 中cmdArr.add(python)与cmdArr.add(dataXPyPath)的命令构造逻辑因此 Python 环境属于必需依赖。3.5 安装 DataX下载官方部署包无需对源码编译cd /usr/local/src wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz解压并赋予执行权限tar -zxvf datax.tar.gz chmod 755 datax cd datax用自带 job 样例验证 DataX 是否可用python /usr/local/src/datax/bin/datax.py /usr/local/src/datax/job/job.json通过控制台输出的执行结果判断是否安装成功。配置DATAX_HOME环境变量非必须但强烈建议。编辑/etc/profile末尾追加#set datax environment DATAX_HOME/usr/local/src/datax PATH$PATH:$DATAX_HOME/bin export DATAX_HOME PATH生效. /etc/profile这一步对后续 datax-web 配置影响很大见“七、7.3 配置更改”中关于环境变量优先级的说明。3.6 安装 Maven安装 Maven 的目的是编译 datax-web因为其配置文件需要按实际环境修改后才能打成 jar 包sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo sudo yum install -y maven验证版本mvn -version输出示例Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:4708:00) Maven home: /usr/share/apache-maven Java version: 1.7.0_79, vendor: Oracle Corporation部署文档中的示例环境是 JDK 1.7在实际部署时请确保java -version与mvn -version使用同一套 JDK 1.8 环境避免编译期与运行期版本不一致。四、部署 datax-web4.1 下载源码git clone https://github.com/WeiYe-Jing/datax-web.git未安装 git 时也可直接下载 zip 包并解压。4.2 数据库初始化在 datax-web 目录中找到数据库脚本 bin/db/datax_web.sql用 Navicat 等工具连接 MySQL新建datax_web数据库后执行该脚本。部署文档明确提示不要执行其他 SQL 脚本且执行完成后要检查执行结果。当前版本脚本共创建12 张表本文已核对仓库内该脚本CREATE TABLE语句共 12 条job_group、job_info、job_jdbc_datasource、job_lock、job_log、job_log_report、job_logglue、job_registry、job_user、job_template、job_permission、job_project。部分表在个别 MySQL 版本下可能执行失败需找出并及时处理——部署文档记录的经验是MySQL 8.0 可全部执行成功而 MySQL 5.7 存在时间字段创建报错导致失败的情况。4.3 配置文件修改核心步骤部署文档将 datax-web 拆成两个核心组件datax-admin负责 UI 界面与接口层需要配置数据库连接信息datax-executor负责调度执行需要配置 datax-admin 发布地址、调度器端口、自身日志位置以及 DataX 的datax.py文件位置。1修改 datax-admin 的数据库配置文件位置 datax-admin/src/main/resources/application.ymldatasource: username: root password: your password url: jdbc:mysql://ip:port/datax_web?serverTimezoneAsia/ShanghaiuseLegacyDatetimeCodefalseuseSSLfalsenullNamePatternMatchesAlltrueuseUnicodetruecharacterEncodingUTF-8 driver-class-name: com.mysql.jdbc.Driver当前仓库中的 application.yml 已对关键值做了${...}占位符化如${DB_USERNAME:username}、${DB_PASSWORD:password}、${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_DATABASE:dataxweb}并配置了 Hikari 连接池参数最小空闲连接 5、最大连接数 10、连接超时 30000ms 等部署时可将占位符替换为实际值也可通过启动参数注入。URL 中serverTimezoneAsia/Shanghai、useSSLfalse、characterEncodingUTF-8等参数建议保留以避免时区与字符集导致的连接异常。2修改 datax-executor 配置文件位置 datax-executor/src/main/resources/application.ymldatax: job: admin: ### datax-web admin addressdatax-admin 发布后的端口以及地址此处一定要跟实际相符 addresses: http://ip:port executor: appname: datax-executor ip: ### 此处端口为执行器端口 port: 5555 ### job log path此处是 datax-web 执行器自身日志存储位置 logpath: /usr/local/src/dataxweb/logs ### job log retention days logretentiondays: 30 ### job, access token accessToken: executor: ### 临时文件 json 保存位置 jsonpath: /usr/local/src/dataxweb/json/ #datax 自身的 datax.py 的保存位置此处一定要配置正确 pypath: /usr/local/src/datax/bin/datax.py各配置项含义与注意事项datax.job.admin.addressesdatax-admin 发布后的地址与端口必须与实际相符否则执行器无法注册对应 ExecutorRegistryThread.java 中的 admin 地址循环上报逻辑datax.job.executor.appname执行器应用名调度中心据此动态发现执行器集群部署时同一集群内必须保持一致datax.job.executor.port执行器自身端口供调度中心回调使用datax.job.executor.logpath执行器自身日志存储位置datax.job.executor.logretentiondays日志保留天数datax.job.accessToken调度中心与执行器间的访问令牌可留空datax.executor.jsonpathDataX 任务 JSON 临时文件保存位置。从 ExecutorJobHandler.java 源码可见任务触发时会调用generateTemJsonFile()将trigger.getJobJson()写入jsonPath jobTmp- UUID .conf临时文件执行完毕后删除datax.pypathDataX 自带的datax.py脚本绝对路径配置错误将导致任务无法启动。源码中该值由Value(${datax.pypath})注入并在 BuildCommand.java 中拼入python datax.py [--jvm...] [-D...] job.json命令数组。关于环境变量优先级的说明部署文档强调的重点如果不配置DATAX_HOME环境变量系统会默认读取datax-executor/src/main/resources/application.yml中的logpath、jsonpath、pypath如果配置了DATAX_HOME环境变量则上面三个 path 可以忽略系统优先使用环境变量。该逻辑在源码中有直接印证SystemUtils.java 的getDataXHomePath()通过System.getenv(DATAX_HOME)读取环境变量并缓存ExecutorJobHandler.java 在生成临时 JSON 文件时若检测到DATAX_HOME非空则用dataXHomePath json覆盖jsonpathBuildCommand.java 同理在DATAX_HOME存在时自动推导datax.py路径含bin目录则直接拼接默认脚本名否则追加bin/再拼接。4.4 编译打包datax-web 并非可直接执行文件需要编译生成 jar 包。进入 datax-web 根目录执行mvn package -Dmaven.test.skiptrue执行成功后会在各模块 target 目录下生成 jar 包/datax-admin/target/datax-admin-2.1.1.jar /datax-executor/target/datax-executor-2.1.1.jar将以上两个 jar 拷贝至程序执行目录即可本文按部署文档存放在/usr/local/src/dataxweb目录下。仓库根目录 pom.xml 为多模块聚合工程聚合datax-admin、datax-executor、datax-core、datax-rpc等模块其中datax-executor依赖datax-core提供的调度/执行器核心能力。另外各模块的 deploy.xml 装配描述表明项目也支持mvn package打出带bin、conf、lib目录结构的 tar.gz 发布包配合安装脚本实现一键部署本文采用文档所述的最小化 jar 直启方式两者均可运行。4.5 启动服务nohup 后台运行使用nohup启动保证关闭控制台后程序依然在后台运行nohup java -Xmx1024M -Xms1024M -Xmn448M -XX:MaxMetaspaceSize192M -XX:MetaspaceSize192M -jar datax-admin-2.1.1.jar --server.port9999 nohup java -Xmx1024M -Xms1024M -Xmn448M -XX:MaxMetaspaceSize192M -XX:MetaspaceSize192M -jar datax-executor-2.1.1.jar --server.port6888启动参数要点datax-admin 的--server.port必须与 datax-executor 中配置的admin.addresses端口完全一致否则执行器无法正确注册datax-executor 的--server.port可以自行配置但不能与datax.executor.port默认 5555当前仓库 application.yml 中为${executor.port:9999}重复否则会发生端口被占用的情况——即一个执行器进程同时占用两个端口一个对外服务端口--server.port一个执行器回调端口executor.port上述 JVM 参数为部署文档建议值堆内存 1024M、年轻代 448M、元空间 192M可按服务器内存酌情调整。4.6 访问与登录部署完成后在浏览器输入http://ip:port/index.html其中ip为 datax-admin 部署所在服务器 IPport为 datax-admin 指定的运行端口示例中为 9999。系统默认账号密码为用户名admin密码123456五、常见问题与部署经验汇总执行器无法注册绝大多数原因是admin.addresses的端口与 datax-admin 实际端口不一致或 datax-admin 尚未就绪。执行器注册线程会周期性重试从 ExecutorRegistryThread.java 源码看注册失败仅记录日志并在下一轮心跳间隔内继续尝试因此先启动 admin、再启动 executor、稍等片刻即可完成注册。数据初始化失败检查是否误执行了其他 SQL 脚本确认 MySQL 版本与脚本兼容性8.0 验证通过5.7 可能因时间字段报错执行完成后核对表数量当前版本共 12 张表。任务运行失败优先检查datax.pypath是否指向真实存在的datax.py以及jsonpath目录是否可写可手动执行python /usr/local/src/datax/bin/datax.py /path/to/job.json验证 DataX 自身是否正常。Python 3 环境默认推荐 Python 2.7若使用 Python 3需按 doc/datax-web/datax-python3 下的脚本替换datax/bin中的三个 python 文件。端口占用executor 的--server.port与executor.port不能相同两个端口职责不同对外服务与调度回调相同必然冲突。六、部署后的核心能力一览部署完成后datax-web 通过可视化界面提供以下能力与项目定位一致选择数据源一键生成数据同步任务支持 RDBMS、Hive、HBase、ClickHouse、MongoDB 等数据源批量创建 RDBMS 数据同步任务集成开源调度系统支持分布式与增量同步实时查看运行日志监控执行器资源执行器上报 CPU、内存、负载对应注册线程中的RegistryParamKILL 运行进程数据源信息加密存储datax-admin 的 application.yml 中datasource.aes.key即数据源加密密钥配置项。七、延伸阅读数据库脚本bin/db/datax_web.sqladmin 配置datax-admin/src/main/resources/application.ymlexecutor 配置datax-executor/src/main/resources/application.yml任务执行入口ExecutorJobHandler.java命令构建逻辑BuildCommand.java执行器注册逻辑ExecutorRegistryThread.javaPython 3 兼容脚本doc/datax-web/datax-python3项目总览与二次开发说明README.md、userGuid.md赞分享数据集成数据同步任务调度后端【免费下载链接】datax-webDataX集成可视化页面选择数据源即可一键生成数据同步任务支持RDBMS、Hive、HBase、ClickHouse、MongoDB等数据源批量创建RDBMS数据同步任务集成开源调度系统支持分布式、增量同步数据、实时查看运行日志、监控执行器资源、KILL运行进程、数据源信息加密等。项目地址https://gitcode.com/gh_mirrors/da/datax-web点击查看免费下载相关推荐CANN PyPTO 环境部署与源码编译安装指南CANN PyPTO 环境部署与源码编译安装指南 本篇指南完整梳理 CANN PyPTOParallel Tensor/Tile Operation 编程范式人工智能编译器模型编译深度学习高性能计算CANNAscendBepInEx Linux环境部署依赖安装与权限配置BepInEx Linux环境部署依赖安装与权限配置 引言Linux游戏Mod开发的痛点与解决方案 你是否在Linux系统中尝试部署BepInEx时遭遇过依游戏开发插件系统PaddleGAN 安装指南从环境依赖到源码部署的完整实践PaddleGAN 安装指南从环境依赖到源码部署的完整实践 PaddleGAN 是基于 PaddlePaddle 的生成对抗网络GAN开发套件涵盖图像生人工智能深度学习计算机视觉媒体生成视频处理图像处理上一篇douyin-downloader抖音内容全场景下载与管理解决方案下一篇GPUI 框架跑通指南用 Zed 同款 UI 引擎开窗口、管状态、绑键盘、接屏幕阅读器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表