暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

海豚调度 2025-06-05
436

点击蓝字,关注我们

摘要: 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

二、版本号

  • 版本: 3.2.0

  • 备注说明: DolphinScheduler 3.2.0 版本兼容更多类型数据库,国产化支持Damen数据库,项目中有国产化需求,所以选择此版本

  • 下载地址:https://dolphinscheduler.apache.org/zh-cn/download/3.2.0

三、部署方案

  • 平台只做数据质量监控告警发送不存在高并发相关需求场景,所以采用单机部署

  • 因为该系统需要持续使用,所以要采用配置外部数据库

四、部署步骤

官网部署步骤地址:https://dolphinscheduler.apache.org/zh-cn/docs/3.2.0/guide/installation/standalone

4.1、上传部署包

上传程序到服务目录,apache-dolphinscheduler-3.2.0-bin.tar.gz

解压文件:

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

4.2、创建外部数据库

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

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

mysql-uroot –p
mysql>CREATEDATABASE dolphinscheduler DEFAULTCHARACTERSET utf8 DEFAULTCOLLATE utf8_general_ci;
mysql>GRANTALLPRIVILEGESON dolphinscheduler.* TO'{user}'@'%' IDENTIFIEDBY '{password}';
mysql>GRANTALLPRIVILEGESON dolphinscheduler.* TO'{user}'@'localhost'IDENTIFIEDBY'{password}';
mysql>flushprivileges;

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、上传MySQLl驱动程序

上传MySQLl驱动程序到如下目录

../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

2. 上传你的集群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 包
  1. 把原有的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

2. 上传jdbc包到上面两个路径

六、测试报告

6.1、 测试结论

当前发布版本为:3.2.0。

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





序号功能点评估结果补充
1
工作流定义-数据质量:源数据类型、源数据源、源数据库、源数据表、源表过滤条件、源表检测列、源表检测列、校验操作符、阈值、失败策略、期望值类型、规则名称、部署方式、选项参数、自定义参数
通过

2
工作流实例:工作流实例名称、状态、运行类型、操作
通过

3
工作流定时:工作流名称、开始时间、结束时间、Crontab、失败策略
通过

4
任务定义:任务名称、工作流名称、工作流状态、任务类型
通过

5
任务实例:任务名称、工作流实例、执行用户、节点类型、状态
通过

6
UDF管理:资源管理、函数管理、UDF函数
通过

7
任务组管理:任务组配置、任务组队列
通过

8
质量任务结果:任务结果
通过

9
质量规则管理:规则管理
通过

10
源中心:源中心、源名称、所属用户、源类型
通过

11
告警实例管理:告警实例名称、告警插件名称
通过

12
告警组管理:告警组管理
通过

6.2、兼容性要求及评估结果

序号兼容环境评估结果
1
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个用户可同时在线使用,满足需求
通过
4
CPU使用率
系统在运行过程中占用的CPU资源
没有任务运行时,CPU使用率低于5%
通过
5
内存使用率
系统在运行过程中占用的内存资源
没有任务运行时,内存使用率低于5%
通过

6.4、安全指标及评估

6.4.1、测试指标

6.4.2、修复方法

  1. 禁用Actuator

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

  2. 禁用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、 测试结论

漏洞修复之后,可以发布。




用户案例



网易邮箱 每日互动 惠生工程  作业帮 
博世智驾 蔚来汽车 长城汽车集度长安汽车
思科网讯食行生鲜联通医疗联想
新网银行唯品富邦消费金融 
自如有赞伊利当贝大数据
珍岛集团传智教育Bigo
YY直播  三合一太美医疗
Cisco Webex兴业证券




迁移实战



Azkaban   Ooize(当贝迁移案例)
Airflow (有赞迁移案例)
Air2phin(迁移工具)
Airflow迁移实践



发版消息




Apache DolphinScheduler 3.2.2版本正式发布!
Apache DolphinScheduler 3.2.1 版本发布:增强功能与安全性的全面升级
Apache DolphinScheduler 3.3.0 Alpha发布,功能增强与性能优化大升级!




加入社区



关注社区的方式有很多:

  • GitHub: https://github.com/apache/dolphinscheduler
  • 官网:https://dolphinscheduler.apache.org/en-us
  • 订阅开发者邮件:dev@dolphinscheduler@apache.org
  • X.com:@DolphinSchedule
  • YouTube:https://www.youtube.com/@apachedolphinscheduler
  • Slack:https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-1cmrxsio1-nJHxRJa44jfkrNL_Nsy9Qg

同样地,参与Apache DolphinScheduler 有非常多的参与贡献的方式,主要分为代码方式和非代码方式两种。

📂非代码方式包括:

完善文档、翻译文档;翻译技术性、实践性文章;投稿实践性、原理性文章;成为布道师;社区管理、答疑;会议分享;测试反馈;用户反馈等。

👩‍💻代码方式包括:

查找Bug;编写修复代码;开发新功能;提交代码贡献;参与代码审查等。

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3A%22first+time+contributor%22

优先级问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3Apriority%3Ahigh

如何参与贡献链接https://dolphinscheduler.apache.org/zh-cn/docs/3.2.2/%E8%B4%A1%E7%8C%AE%E6%8C%87%E5%8D%97_menu/%E5%A6%82%E4%BD%95%E5%8F%82%E4%B8%8E_menu

如果你❤️小海豚,就来为我点亮Star吧!

https://github.com/apache/dolphinscheduler


你的好友秀秀子拍了拍你

并请你帮她点一下“分享”


文章转载自海豚调度,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论