DolphinScheduler 可视化工作流任务调度:30分钟从部署到跑通第一个任务
【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler
凌晨两点,一批夜间 ETL 卡在第 7 个节点,没人说得清是哪个上游断了、该重启谁,只能一个个脚本手工补跑。你需要的是一套能把任务依赖画成 DAG、可视化编排的分布式任务调度系统——Apache DolphinScheduler。
痛点:调度到底难在哪
- 任务之间靠脚本和口头约定串联,依赖关系没人说得清,一挂就不知道断在哪。
- 同一个流程每天手工触发,没有统一的定时、重试和失败告警,出错全靠人盯。
- 想加一步、改个顺序,只能改代码重新发布,流程本身没有可视化入口。
项目速写:DolphinScheduler 是什么
Apache DolphinScheduler 是一个分布式、可扩展的可视化 DAG 工作流调度平台,帮数据团队把"谁先跑、谁后跑、失败了怎么办"用拖拽画布固化下来,开箱即用。它适合数据开发、运维和平台团队,核心特性:
- 去中心化架构,master/worker 可横向扩展,原生高可用
- 拖拽式 DAG 画布,支持 Shell、SQL、Spark、Flink、Python 等 40 多种任务
- 内置定时调度、依赖调度、失败重试与告警
- 多租户、队列、安全权限控制
- 提供 Standalone、伪集群、Kubernetes 多种部署方式
官方文档入口:docs/,中文快速上手可看 standalone 部署文档。
部署:Standalone 模式最快上手
Standalone 把所有组件打进一个进程,用内存 H2 存元数据,适合先把流程跑通,不建议长期跑生产(工作流控制在 20 个以内)。前置条件清单:
- JDK 1.8 或 11,并配置好
JAVA_HOME - 一台 Linux 机器(root 可操作)
- 一份 DolphinScheduler 二进制包
apache-dolphinscheduler-*-bin.tar.gz
1. 建用户并配置 sudo 免密。任务会以sudo -u 某用户 -i切换身份执行,所以部署用户必须免密:
useradd dolphinscheduler echo "dolphinscheduler" | passwd --stdin dolphinscheduler sed -i '$adolphinscheduler ALL=(ALL) NOPASSWD: ALL' /etc/sudoers sed -i 's/Defaults requiretty/#Defaults requiretty/g' /etc/sudoers2. 解压并启动。切到部署用户执行:
tar -xvzf apache-dolphinscheduler-*-bin.tar.gz chmod -R 755 apache-dolphinscheduler-*-bin cd apache-dolphinscheduler-*-bin bash ./bin/dolphinscheduler-daemon.sh start standalone-server3. 验证服务已起来。执行下面命令,能看到 standalone-server 运行中并返回 PID 即成功:
bash ./bin/dolphinscheduler-daemon.sh status standalone-server4. 登录界面。浏览器打开http://localhost:12345/dolphinscheduler/ui,默认账号admin、密码dolphinscheduler123。能进入主界面就代表部署完成。
跑通:从建项目到运行第一个 Shell 工作流
下面把一个"跑一个 Shell 脚本并看结果"的最小工作流从头做到尾。
- 创建项目。顶部进
Project,点Create Project,填项目名(如demo)和描述,点Confirm。提交后项目列表里能看到它,说明创建成功。
- 画工作流。进入项目,左侧
Workflow → Workflow Definition,点Create。从左侧任务栏把SHELL拖到画布,双击节点,在Task Name填hello,Raw Script填:
echo "Hello DolphinScheduler" > /tmp/test.txt保存。点右上角
Save,填工作流名称与描述后确认,画布上节点即被保存下来。运行。点工具栏的运行按钮(Start Process)触发一次执行,无需等待定时。
看结果。左侧
Workflow → Workflow Instance能看到刚才的实例,状态列显示绿色勾(成功),Start/End Time 有值即代表任务真正跑完。
盯盘与救火:实例状态、日志与状态控制
工作流跑起来之后,日常就盯三样东西,都在同一个项目里完成。
- 实例状态。
Workflow Instance列表能看到每个实例的运行状态(成功/失败/运行中)和起止时间;点进具体实例,DAG 上每个任务节点会标出自己的执行状态,一眼定位卡在哪一步。 - 看日志。在任务实例上点
View Log,弹出完整执行日志,能看到实际执行的命令、切换的用户、退出码,排查问题主要靠它。
- 状态控制。实例列表的操作列提供暂停、恢复、重试、终止等按钮:失败的任务可以直接
重试而不用重建流程,运行中的可以暂停再恢复。想确认服务端健康,切到Monitor页能看 master/worker 的 CPU、内存、心跳状态,不用登机器。
进阶:存储、数据源与插件扩展
跑通流程后,按需扩展,不用一次全配:
- 换持久化数据库。Standalone 默认 H2 内存库,重启会丢数据;生产请配置 MySQL/PostgreSQL,见 数据源与元数据库配置。
- 上集群/K8s。正式环境建议伪集群或集群部署,见 集群部署文档。
- 加任务类型。需要 Spark、Flink、HTTP、K8s 等 40 多种任务,都在 任务插件目录。
- 对接外部数据源。支持 MySQL、Hive、Doris、PostgreSQL 等,见 数据源插件目录。
- 对象存储与告警。资源文件存 HDFS/S3/OSS 看 存储插件,失败通知钉钉/飞书/邮件看 告警插件。
容易踩的坑
现象:浏览器打不开 12345 端口。原因:服务没起来或端口被占用。 解决:先跑status确认有 PID,没有就看standalone-server/logs/dolphinscheduler-server.log。
现象:任务报权限或执行失败。原因:部署用户没配 sudo 免密,切用户失败。 解决:补齐sudoers的NOPASSWD并注释Defaults requiretty,重启服务。
现象:重启 standalone 后工作流全没了。原因:默认用 H2 内存库,重启即清空。 解决:按 数据库配置 切到 MySQL/PostgreSQL 持久化元数据。
现象:任务找不到执行用户。原因:任务指定的执行用户在系统里不存在或没配租户。 解决:在Security里创建用户并分配对应 Linux 租户,再重跑。
DolphinScheduler 把"画流程、定时跑、失败了能看到"这几件事收进了同一个可视化界面,Standalone 十分钟能起来,之后按团队规模平滑升级到集群。更多细节去 官方文档 翻,源码就在 dolphinscheduler-master/、dolphinscheduler-worker/ 这些模块里,动手改之前建议先读一下对应目录的 CLAUDE.md。
【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考