当前位置: 首页 > ops >正文

全维度测试通过!DolphinScheduler 3.2.0单节点部署与验证实录

摘要:Apache DolphinScheduler单节点部署及测试报告
关键词:Apache DolphinScheduler、单节点部署、测试报告

(编者按:虽然本次测试显示3.2.0版本单节点部署在应用上完全可用,但社区仍推荐在生产场景中使用3.1.9版本,此版本更加稳定。)

整体说明

从部署环境的简介,到部署方案的介绍,以及实际的部署步骤,到解决具体的常见问题,最后给出简单的测试报告,结构如下图所示:

一、部署环境

  • Java 版本:1.8.0_181
  • 操作系统:CentOS Linux release 7.6.1810
  • MySQL 库版本:5.7.22-22-log
  • MySQL 驱动程序版本:8.0.16

二、版本号

  • DolphinScheduler 版本:3.2.0
  • 说明:该版本兼容更多国产数据库(如达梦),满足项目国产化需求
  • 下载地址:DolphinScheduler 3.2.0 下载

三、部署方案

  • 使用场景:平台用于数据质量监控及告警发送,无高并发需求
  • 部署方式:单机部署
  • 数据存储:配置外部 MySQL 数据库进行持久化

四、部署步骤

4.1 上传部署包

tar -xvzf apache-dolphinscheduler-3.2.0-bin.tar.gz

4.2 创建外部数据库

创建外部数据库实例、账号,并对账号授权库的全部权限;

备注说明: 其中 user 和 passwd 为自己安装好的数据库的用户名和密码

mysql-uroot –p
mysql>CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULTCOLLATE utf8_general_ci;
mysql>GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'%' IDENTIFIEDBY '{password}';
mysql>GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'localhost'IDENTIFIED BY '{password}';
mysql>flush privileges;

4.3 修改元数据库配置

配置系统的元数据库,使用MySQL存储相关数据,以便持久化使用。需要修改以下配置

主程序运行的脚本程序,

存储位置 ../apache-dolphinscheduler-3.2.0-bin/bin/env/dolphinscheduler_env.sh

备注说明: 修改其中 ip 地址、端口、数据库用户名、密码

特别注意: ${DATABASE} 不需要修改

export DATABASE=mysql
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:mysql://xxx.xxx.xxx.xxx:23306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true"
export SPRING_DATASOURCE_USERNAME=dolphinscheduler
export SPRING_DATASOURCE_PASSWORD=xxxxxxxxx

4.4 上传 MySQL 驱动程序

上传至以下目录:

../apache-dolphinscheduler-3.2.0-bin/standalone-server/libs/standalone-server
../apache-dolphinscheduler-3.2.0-bin/api-server/libs
../apache-dolphinscheduler-3.2.0-bin/alert-server/libs
../apache-dolphinscheduler-3.2.0-bin/master-server/libs
../apache-dolphinscheduler-3.2.0-bin/tools/libs
../apache-dolphinscheduler-3.2.0-bin/worker-server/libs

4.5 初始化外部数据库

sh ../apache-dolphinscheduler-3.2.0-bin/tools/bin/upgrade-schema.sh

4.6 启停服务

启动单节点

sh ../apache-dolphinscheduler-3.2.0-bin/bin/dolphinscheduler-daemon.shstart standalone-server

查看节点状态

sh ../apache-dolphinscheduler-3.2.0-bin/bin/dolphinscheduler-daemon.shstatus standalone-server

停止单节点

sh ../apache-dolphinscheduler-3.2.0-bin/bin/dolphinscheduler-daemon.shstop standalone-server

4.7 访问页面

访问地址:http://xxx.xx.xx.xxx:12345/dolphinscheduler
默认账号密码:admin/dolphinscheduler123

五、常见问题及解决方式

5.1、时间不一致

  • 现象: 创建任务后,页面上显示的时间与实际时间不一致。
  • 解决方案: 登录之后右上角选择上海时区,不然任务创建时间、更新时间显示不正确。

5.2、异常终止

  • 现象: 当 standalone-server 因异常(高负载、kill)等终止后,重新启动后,工作流实例中有大量任务处于“执行”状态,无法删除。

  • 解决方案1: 先下线工作流定义,然后重新启动 standalone-server 服务即可。原因为初次进程异常后,未来的调度计划已提交,导致重新启动 standalone-server 服务后,会追溯过去将来态的任务,当调度计划太多,就会整体僵死。以上为临时处理方式,并非彻底解决措施。

  • 解决方案2: 如果处理1依然不可解决,尝试清空 t_ds_task_instance(任务执行记录)、t_ds_process_instance(工作量执行记录)两张表数据,或者删除指定记录行。

5.3、大量日志

  • 现象: dolphinscheduler 运行过程中会生成大量日志

  • 解决方案: 使用 standalone-server 模式启动后,日志会记录在 standalone-server/logs 目录下,需要定期自动化删除,可写一些运维脚本删除。

5.4、数据源中心连接Hive失败

  • 现象: 注册时 报错信息
Required field ‘client_protocol’ is unset! Struct:TOpenSessionReq(client_pro
  • 原因分析: 是因为dolphinscheduler使用hive jdbc的版本和我们使用的HDP的hive版本不一致,

  • 解决方案: 替换驱动程序到如下目录

  1. 把原有的hive jdbc 备份
mv  ../apache-dolphinscheduler-3.2.0-bin/api-server/libs/hive-jdbc-2.3.9.jar   ../apache-dolphinscheduler-3.2.0-bin/api-server/libs/hive-jdbc-2.3.9.jar.bak
mv  ../apache-dolphinscheduler-3.2.0-bin/worker-server/libs/hive-jdbc-2.3.9.jar   ../apache-dolphinscheduler-3.2.0-bin/worker-server/libs/hive-jdbc-2.3.9.jar.bak
  1. 上传你的集群Hive 对应的JDBC 版本Jar包,到上面两个路径,对应的Jar包可以在Hive集群上搜索

5.5、SQL脚本使用Hive UDF

  • 现象: 当使用SQL脚本模块 且 使用已经注册号的Hive UDF, 报错信息
[ERROR] 2024-02-23 15:36:07.355 +0800 - execute sql error: Error while  compiling statement: FAILED: ParseException line 1:18 missing KW_VIEW at ‘temporary’ near ‘replace’ in table name

原因分析:

  • Hive的SQL新建临时函数的语句 不支持 create or replace
  • 因为 dolphinscheduler 版本遗留BUG,没写对这个SQL
  • 解决方案: 修改源码中的语法,并替换对应Jar 包
  • 把原有的hive jdbc 备份
mv  ../apache-dolphinscheduler-3.2.0-bin/api-server/libs/dolphinscheduler-task-sql-3.2.0.jar   ../apache-dolphinscheduler-3.2.0-bin/api-server/libs/dolphinscheduler-task-sql-3.2.0.jar.bak
mv  ../apache-dolphinscheduler-3.2.0-bin/worker-server/libs/dolphinscheduler-task-sql-3.2.0.jar   ../apache-dolphinscheduler-3.2.0-bin/worker-server/libs/dolphinscheduler-task-sql-3.2.0.jar.bak
mv  ../apache-dolphinscheduler-3.2.0-bin/master-server/libs/dolphinscheduler-task-sql-3.2.0.jar   ../apache-dolphinscheduler-3.2.0-bin/master-server/libs/dolphinscheduler-task-sql-3.2.0.jar.bak
  1. 上传jdbc包到上面两个路径

六、测试报告

6.1、 测试结论

当前发布版本为:3.2.0。

3.2.0版本,完成功能、兼容、安全测试,测试通过,可发布上线。

序号功能点说明评估结果补充说明
1工作流定义 - 数据质量配置项通过
2工作流实例功能通过
3工作流定时配置通过
4任务定义通过
5任务实例通过
6UDF 管理通过
7任务组管理通过
8质量任务结果通过
9质量规则管理通过
10数据源中心通过
11告警实例管理通过
12告警组管理通过

6.2 兼容性要求及性能评估

兼容环境评估结果
java版本:1.8.0_181操作系统:CentOSLinux release 7.6.1810mysql库版本:5.7.22-22-logmysql驱动程序版本:8.0.16通过

6.3 性能指标及评估

场景编号场景名称性能指标实际结果结论
1吞吐量单位时间内系统处理的任务数量100个任务同时运行,5分钟内完成通过
2响应时间从提交任务到系统开始执行任务的时间提交表行数校验质量任务到完成,1分钟内完成通过
3并发用户数同时在线的用户数量10个用户可同时在线使用,满足需求通过
4CPU使用率系统在运行过程中占用的CPU资源)没有任务运行时,CPU使用率低于5%通过
5内存使用率系统在运行过程中占用的内存资源没有任务运行时,内存使用率低于5%通过

6.4 安全指标及评估

6.4.1 测试指标


6.4.2 修复方法
  1. 禁用Actuator

替换目标文件:apache-dolphinscheduler-3.2.0-bin/standalone-server/conf

  1. 禁用swagger

增加配置文件:apache-dolphinscheduler-3.2.0-bin/standalone-server/conf

  • 验证Actuator是否禁用,输入下面链接没有内容出来

http://${ip}:12345/dolphinscheduler/actuator/metrics

  • 验证swagger是否禁用成功

http://${ip}:12345/dolphinscheduler/swagger-ui/index.html

6.4.3 测试结论
  • 修复安全漏洞后,可以发布上线。
http://www.xdnf.cn/news/12065.html

相关文章:

  • cursor-free-vip使用
  • [实际项目2] 从西门子PLC中读取曲线数值并绘图
  • 半监督学习:低密度分离假设 (Low-Density Separation Assumption)
  • IT组织转型记:从运维支持到数字利润中心的蜕变
  • OpenCV CUDA模块图像处理-----对图像执行 均值漂移过程(Mean Shift Procedure)函数meanShiftProc()
  • opencv学习笔记1:图像基础、图像操作、直方图均衡化详解
  • 破局新能源消纳难题!安科瑞智慧能源平台助力10KV配电网重构未来
  • Python数据可视化科技图表绘制系列教程(三)
  • AtCoder-abc408_b 解析
  • React hook之userReducer
  • vue-19(Vuex异步操作和变更)
  • 【android bluetooth 协议分析 02】【bluetooth hal 层详解 7】【高通蓝牙hal-读流程介绍】
  • 古老界面硬核工具:小兵以太网测试仪(可肆意组包,打vlan)
  • 重启路由器ip不变怎么回事?原因分析与解决方法
  • Java八股文——集合「List篇」
  • 【计算机网络】NAT、代理服务器、内网穿透、内网打洞、局域网中交换机
  • npm install 报错:npm error: ...node_modules\deasync npm error command failed
  • linux 安装mysql8.0;支持国产麒麟,统信uos系统
  • SpringCloud——Nacos
  • SpringBoot自动化部署全攻略:CI/CD高效实践与避坑指南
  • 桂花网蓝牙网关物联网医院动态血糖管理应用案例
  • 金融系统功能测试:科技赋能,安全护航
  • 【赵渝强老师】Docker的图形化管理工具
  • 26考研 | 王道 | 计算机组成原理 | 四、指令系统
  • Sentinel微服务保护
  • 基于cornerstone3D的dicom影像浏览器 第二十八章 LabelTool文字标记,L标记,R标记及标记样式设置
  • 企业培训学习考试系统源码 ThinkPHP框架+Uniapp支持多终端适配部署
  • python训练营打卡第45天
  • python学习day39
  • Linux环境-通过命令查看zookeeper注册的服务