DolphinScheduler 3.4.0升级指南与性能优化实践
1. 项目背景与升级必要性
最近在DataSophon平台上管理DolphinScheduler时遇到了TGT续期问题,这个问题在3.1.8版本中尤为明显。经过调研发现,3.4.0版本不仅修复了这个bug,还带来了不少新特性。作为平台管理员,我决定手动完成这次升级,以下是详细的升级过程和经验总结。
DolphinScheduler作为一款开源的分布式工作流任务调度系统,在数据仓库ETL、定时报表生成等场景应用广泛。3.4.0版本主要优化了工作流执行性能,增强了与实时数仓组件(如Doris)的集成能力,同时改进了邮件通知功能。这些改进对我们的数据平台运维至关重要。
2. 升级前准备工作
2.1 环境检查清单
在开始升级前,我做了以下准备工作:
- 备份关键数据:
- 数据库备份(特别是dolphinscheduler库)
- 工作流定义文件导出
- 自定义脚本和配置文件
- 检查系统兼容性:
- JDK版本需1.8+
- MySQL 5.7+或PostgreSQL 8.2.15+
- Zookeeper 3.4.6+
- 下载必要文件:
- dolphinscheduler-3.4.0-bin.tar.gz
- 对应的mysql驱动包
重要提示:建议在测试环境先验证升级流程,生产环境升级务必选择业务低峰期。
2.2 版本差异分析
通过对比3.1.8和3.4.0的release notes,主要变化包括:
- 安全增强:
- Kerberos认证优化
- TGT续期机制重构
- 新功能:
- 工作流版本控制
- 任务依赖可视化
- 性能提升:
- 任务派发效率提升30%
- API响应时间优化
3. 详细升级步骤
3.1 服务停止与备份
首先有序停止相关服务:
# 停止DolphinScheduler服务 sh ./bin/stop-all.sh # 备份安装目录 tar -czvf dolphinscheduler-backup-$(date +%Y%m%d).tar.gz /opt/dolphinscheduler # 备份数据库(示例为MySQL) mysqldump -uroot -p dolphinscheduler > dolphinscheduler_backup_$(date +%Y%m%d).sql3.2 新版本部署
解压新版本并迁移配置:
tar -zxvf dolphinscheduler-3.4.0-bin.tar.gz -C /opt/ cd /opt/dolphinscheduler-3.4.0 # 迁移旧配置 cp ../dolphinscheduler/conf/application*.yml ./conf/ cp ../dolphinscheduler/conf/common.properties ./conf/修改关键配置:
# conf/common.properties # 修改资源存储路径(如需要) resource.storage.type=HDFS resource.storage.upload.base.path=/dolphinscheduler # 邮件服务器配置 mail.server.host=smtp.example.com mail.server.port=465 mail.sender=notify@example.com3.3 数据库升级
执行数据库变更脚本:
mysql -uroot -p dolphinscheduler < ./sql/dolphinscheduler_mysql.sql特别注意:如果是从3.1.8升级,需要额外执行增量脚本:
mysql -uroot -p dolphinscheduler < ./sql/upgrade/3.1.8_to_3.4.0/mysql/dolphinscheduler_ddl.sql mysql -uroot -p dolphinscheduler < ./sql/upgrade/3.1.8_to_3.4.0/mysql/dolphinscheduler_dml.sql4. 升级后验证
4.1 基础功能测试
- 服务启动:
sh ./bin/start-all.sh登录验证:
- 检查Web UI可正常访问
- 验证原有账号登录正常
核心功能检查:
- 创建工作流测试
- 定时任务触发测试
- 邮件通知测试(特别关注3.4.0的邮件功能改进)
4.2 性能基准测试
对比升级前后的关键指标:
| 指标项 | 3.1.8版本 | 3.4.0版本 | 提升幅度 |
|---|---|---|---|
| 工作流创建响应时间 | 1200ms | 850ms | 29% |
| 任务派发延迟 | 500ms | 350ms | 30% |
| API平均响应时间 | 800ms | 600ms | 25% |
5. 常见问题解决
5.1 数据库兼容性问题
问题现象:启动时报错"Unknown column 'flag' in 'field list'"
解决方案:
- 检查是否漏执行增量SQL脚本
- 手动添加缺失字段:
ALTER TABLE t_ds_process_definition ADD COLUMN `flag` tinyint(1) DEFAULT NULL COMMENT 'flag';5.2 邮件配置不生效
问题排查:
- 检查common.properties配置
- 验证网络连通性:
telnet smtp.example.com 465- 查看日志定位问题:
tail -f logs/dolphinscheduler-alert.log5.3 资源文件丢失
预防措施:
- 升级前备份resource目录
- 检查HDFS配置是否正确:
# conf/common.properties hdfs.root.user=hdfs fs.defaultFS=hdfs://namenode:80206. 升级后优化建议
启用工作流版本控制:
- 在项目设置中开启"工作流版本管理"
- 设置保留版本数为5-10个
配置监控告警:
- 集成Prometheus监控
- 设置关键指标阈值告警
性能调优参数:
# conf/application-master.properties master.exec.threads=100 master.exec.task.num=20 # conf/application-worker.properties worker.exec.threads=50 worker.heartbeat.interval=10这次升级过程中最大的体会是:一定要做好完整的回滚预案。我在测试环境验证时曾遇到数据库字段不兼容的问题,幸好有完整的备份可以快速回退。建议大家在每个关键步骤完成后立即验证,不要等到全部升级完成再测试。