
点击蓝字,关注我们
摘要: 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版本不一致,
解决方案: 替换驱动程序到如下目录
把原有的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
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
六、测试报告
6.1、 测试结论
当前发布版本为:3.2.0。
3.2.0版本,完成功能、兼容、安全测试,测试通过,可发布上线。
| 序号 | 功能点 | 评估结果 | 补充 |
6.2、兼容性要求及评估结果
| 序号 | 兼容环境 | 评估结果 |
|---|---|---|
6.3、性能指标及评估
| 场景编号 | 场景名称 | 性能指标 | 实际结果 | 结论 |
|---|---|---|---|---|
6.4、安全指标及评估
6.4.1、测试指标


6.4.2、修复方法
禁用Actuator
替换目标文件:apache-dolphinscheduler-3.2.0-bin/standalone-server/conf
禁用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、 测试结论
漏洞修复之后,可以发布。

用户案例
迁移实战
发版消息
加入社区
关注社区的方式有很多:
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;编写修复代码;开发新功能;提交代码贡献;参与代码审查等。


你的好友秀秀子拍了拍你
并请你帮她点一下“分享”






