15 分钟上手 Apache DolphinScheduler:分布式任务调度平台从部署到跑通第一条可视化工作流
【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler
凌晨两点,定时批处理炸了:上游脚本跑完了,下游那个脚本却没被拉起。靠 cron 手动串了 8 个脚本,数据仓库每天一跑,脚本之间的依赖关系已经没人敢动。Apache DolphinScheduler 就是为这种场景做的分布式任务调度平台——把任务依赖画成可视化工作流,按 CRON 定时调度,执行状态和日志一目了然。接下来这篇上手指南,会带你从拉起服务一路走到看到第一条执行日志。
Apache DolphinScheduler 擅长什么 🧭
一句话定位:低代码方式的现代数据编排平台,专门处理数据流水线里的复杂任务依赖。你可以先记住这几件事:
- 可视化 DAG 编排:拖拽节点、拉箭头连线就能描述任务依赖,从入度为零的节点开始执行,无需手写调度代码
- 开箱即用的任务类型:Shell、SQL、Spark、Flink、Python、HTTP 等 20 多种任务类型内置,覆盖了数仓 ETL 和大数据 pipeline 的常见动作
- 灵活的调度策略:CRON 定时、补数(web 端原生支持)、跨工作流依赖三种方式可以混着用
- 多租户执行:任务以真实的 Linux 用户身份运行,Worker 节点资源隔离
- 去中心化高可用:多 Master、多 Worker 无主架构,节点横向扩容,Master/Worker 均支持故障转移
先把服务跑起来:三种路径 🚀
根据你的环境挑一条就够了,都不需要装 Hadoop 全家桶。
源码构建 Standalone:功能最全
适合想把功能摸全的新手。Standalone 把 API、Master、Worker、Alert 全部塞进一个进程,元数据用内存 H2 存储,重启即清空——所以它只用来体验,别上生产:
git clone https://gitcode.com/GitHub_Trending/dol/dolphinscheduler cd dolphinscheduler ./mvnw clean package -DskipTests cd dolphinscheduler-dist/target/apache-dolphinscheduler-*-bin bash ./bin/dolphinscheduler-daemon.sh start standalone-server构建耗时较长,可以先去泡杯咖啡。想换任务类型时,注意 3.3.0 起二进制包不再自带插件依赖,执行bash ./bin/install-plugins.sh并按 Standalone 部署文档 的说明在conf/plugins_config里声明需要的插件即可。
Docker 单容器:最快体验
只要体验核心功能,一条命令拉起独立容器:
docker run --name dolphinscheduler-standalone-server -p 12345:12345 -p 25333:25333 -d apache/dolphinscheduler-standalone-server:<version>同样基于 H2 内存库,定位和 Standalone 一致:快速体验,不承载生产流量。
Docker Compose / Helm:更接近生产
Compose 方式会把 API、Master、Worker、Alert 拆成独立容器,并顺带起 PostgreSQL 和 ZooKeeper,元数据重启不丢:
cd deploy/docker docker-compose --profile schema up -d # 初始化数据库结构 docker-compose --profile all up -d # 启动全部服务Kubernetes 生产环境则直接用仓库里内置的 Helm Chart:cd deploy/kubernetes/dolphinscheduler && helm install dolphinscheduler .。更完整的参数说明在 Docker 部署教程。
从登录页到第一条执行日志 🖥️
服务起来后,浏览器打开http://localhost:12345/dolphinscheduler/ui,默认账号admin/dolphinscheduler123。
租户:任务真正的执行者
先别急着建工作流,花一分钟理解租户(Tenant)。用户是登录 web 界面的人,租户才是 Worker 运行任务时使用的 Linux 用户——到安全中心 -> 租户管理新建一个租户(比如dev),再到安全中心 -> 用户管理把它分配给 admin。如果什么都不配,系统会落到默认租户default(以程序启动用户执行任务),体验时能跑通,但生产环境建议显式配置。
画第一条 DAG 工作流
一切工作流必须属于某个项目,所以先在项目管理页点击创建项目。进入项目后,在工作流定义页点击创建工作流,你会看到一个空白画布。
从左侧工具栏把一个 Shell 任务拖到画布上,节点名称填task-1,脚本内容写一句echo "Hello DolphinScheduler"就够;再拖一个task-2。然后按住task-1上的箭头连到task-2,一条带方向的依赖边就建好了——这就是 DAG 编排的全部手势:拖节点、拉连线、点保存。
上线运行,然后看日志
工作流画完还不能直接跑。回到工作流定义列表,先点上线,再点运行。切到工作流实例页能看到状态为执行中的实例;点进实例,右键任意任务选查看日志,就能看到Hello DolphinScheduler的输出。至此,最小可用的分布式调度链路已经完整跑通:调度触发 → Master 分发 → Worker 执行 → 日志回收。
跑通之后:值得延伸的方向 ⚙️
- 任务与告警插件:Shell 之外还有 Spark、Flink、DataX、Sqoop 等任务类型,邮件、钉钉、企业微信、飞书等告警渠道也是插件,均按 SPI 机制加载。想加新任务类型,照着 任务插件目录 里任意一个模块抄结构即可。
- 高可用与故障转移:生产部署让 Master 和 Worker 各上两个实例以上,配合 ZK 集群与数据库主从。节点宕机后,未完成任务会按 集群部署文档 描述的机制自动漂移。
- 跨工作流依赖:用
依赖类型任务引用其他工作流的执行状态,就能把"上游数仓跑完再触发报表"这类跨流程逻辑表达出来。 - 补数与状态控制:补数在 web 端原生支持,工作流实例运行中也可以随时暂停、停止、恢复。
接下来往哪深入 📚
文档入口看 官方中文文档,其中 快速上手教程 和这一节的顺序一致。想读源码的话,调度状态机在dolphinscheduler-master/,任务执行框架在dolphinscheduler-task-executor/,REST 层在dolphinscheduler-api/,每个模块根目录下的CLAUDE.md都有结构导读。
Apache DolphinScheduler 的价值,在于把"靠记忆维护的脚本依赖"变成一张可执行、可调度、可追溯的可视化 DAG。打开官方文档深入任务插件开发和集群部署两章,你就能把单机体验升级成生产级的分布式任务调度平台。
【免费下载链接】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),仅供参考