5 步跑通首个分布式工作流:Apache DolphinScheduler 数据编排入门
2026/9/12 16:37:44 网站建设 项目流程

5 步跑通首个分布式工作流: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

每天凌晨的 ETL 同步脚本在无人值守时跑挂,第二天早上报表才发现问题——这种"手动盯日志"的日子可以结束了。Apache DolphinScheduler 是一个分布式、可视化的数据编排平台(data orchestration platform):把任务拖到画布上生成 DAG(有向无环图)依赖,用 CRON 定时触发,失败自动重试并告警,整套流程从"人盯"变成"机器盯"。下面先跑通一个最小工作流,再讲清楚它适合解决哪些场景。

能力速览:它替你把哪些事接过去了

按场景拆开看,DolphinScheduler 覆盖的是数据团队日常的四类工作:

定时调度与补数内置 Quartz 做 CRON 表达式调度,工作流还支持依赖触发(上游流程跑完才启动下游)和补数(backfill,UI 原生支持按日期区间回跑历史数据)。

数据同步与任务扩展Shell、SQL、Spark、Flink、Python、DataX、SeaTunnel 等 20 多种任务类型开箱即用,任务插件集中在 dolphinscheduler-task-plugin/ 目录下,按 SPI 机制加载,缺什么补什么即可。

失败告警与健康检查任务失败可按策略重试、从失败节点恢复,告警走独立 Alert 服务,渠道包括邮件、钉钉、飞书、企业微信、Slack、Telegram、HTTP 等十几种;Master、Worker 节点状态与资源占用在 Monitor 页面实时可见。

多机横向扩展Master 负责流程编排、Worker 负责执行物理任务,两者都可横向扩容并自动故障转移(failover),服务注册基于 Registry(默认 ZooKeeper,可选 Etcd/JDBC),无需中心化单点。

🚦 三条上手路线:本地体验 / 容器化 / 集群生产

Standalone 快速体验(本地尝鲜)适用:单机能跑通功能验证,建议 20 个以下工作流,注意它用 H2 内存库存元数据,重启即清空。

git clone https://gitcode.com/GitHub_Trending/dol/dolphinscheduler cd dolphinscheduler ./mvnw clean install -DskipTests -Prelease cd dolphinscheduler-dist/target/apache-dolphinscheduler-*-bin bash ./bin/dolphinscheduler-daemon.sh start standalone-server

Docker 一键部署(开发/测试环境)适用:各服务独立容器、重启保留元数据,仓库内自带 compose 编排(PostgreSQL + ZooKeeper + 四个服务一起拉起):

cd deploy/docker docker-compose --profile schema up -d # 初始化数据库表结构 docker-compose --profile all up -d # 启动全部服务

Kubernetes 集群生产(高可用)适用:多实例、需弹性扩缩的生产环境,Helm Chart 位于 deploy/kubernetes/dolphinscheduler/:

helm install dolphinscheduler deploy/kubernetes/dolphinscheduler

三条路线的产物都会暴露同一个入口:浏览器访问http://localhost:12345/dolphinscheduler/ui,默认账号密码admin / dolphinscheduler123。3.3.0 起二进制包不再内置任务插件依赖,如运行时报ClassNotFoundException,执行bash ./bin/install-plugins.sh <版本>下载依赖包,并可通过conf/plugins_config只保留需要的插件(例如仅留dolphinscheduler-task-shell)。

🛠️ 一个任务串到底:跑通一个每日 ETL 流程

登录后第一件事是准备"谁来执行任务"。DolphinScheduler 区分两个角色:用户(User)是登录 Web UI 操作的人,租户(Tenant)是任务真正的执行者——Worker 会以租户对应的 Linux 用户身份sudo -u切换过去跑任务。所以在安全中心 -> 租户管理里先建一个租户(比如data_warehouse,会自动创建同名 Linux 用户),再回到安全中心 -> 用户管理把它分配给 admin。

租户就绪后回到项目管理页面创建项目,比如daily_etl——DolphinScheduler 里所有工作流必须挂在项目下,项目同时是权限隔离的边界。

进入项目,打开工作流定义,点击创建工作流进入画布。从左侧工具栏拖一个 Shell 任务到中间,节点名称填抽取上游日志,任务参数写一条echo "extract done";再拖一个 Shell 任务命名为写入数仓,内容换成echo "load done"

接下来把"抽取"节点的输出箭头拖到"写入"节点上,画布上会出现一条带箭头的连线——这就是 DAG 里的依赖关系,上游成功之后下游才会被调度。

两个任务都配置好后(右侧表单里填写节点名称与脚本内容即可),点右上角保存并填好流程名称。此时工作流还是下线状态,在工作流定义列表里先点上线,再点运行,工作流开始执行。

执行过程中进入工作流实例页面能看到实例状态从"执行中"变成"成功";点开实例找到具体任务,右键选查看日志,两条extract done/load done会按依赖顺序依次出现在日志里。到这里,一个最小 ETL 流程已经完整跑通。要让它每天凌晨自动跑,只需在运行参数里给流程配一条 CRON 表达式(如0 0 2 * * ?)并开启定时。

进阶与避坑:遇到问题时怎么处理

如果启动时报ClassNotFoundException:绝大多数情况是任务插件依赖缺失。跑一遍bash ./bin/install-plugins.sh <版本>,再用conf/plugins_config把不用的插件裁掉,减小启动体积。

如果发现重启后工作流全没了:这是 Standalone 的 H2 内存库特性,不是数据被误删。认真使用请把元数据库切到 MySQL 或 PostgreSQL(配置见docs/docs/zh/guide/installation/datasource-setting.md),Docker 路线默认就是 PostgreSQL。

如果任务偶尔失败想让它自己重试:在任务属性里设置重试次数与重试间隔,失败策略可配"失败后重试直到成功"或"重试 N 次后直接失败";配合流程级的失败告警(在流程定义里绑定告警组),失败会推送到钉钉、飞书等渠道,不用再靠人肉盯。

如果需要跨工作流依赖:不要用"手动等上游跑完再点运行",拖一个Dependent(依赖)任务到画布,配置要依赖的上游流程 ID 与成功状态,实现天级/月级的跨流程编排。

如果怀疑节点本身出问题:先看Monitor页面——Master、Worker 的 CPU、内存、负载和数据库连接池状态一目了然,不用登录服务器逐台排查;配合首页的任务/流程状态统计,基本能定位到是"任务写错了"还是"节点扛不住了"。

如果并行任务把机器压满:Worker 端任务按租户队列和优先级调度,给重任务单独建租户、调低其优先级,再对 Worker 节点做横向扩容,比在一台机器上调线程池更稳妥。

想继续深入

中文用户手册在 docs/docs/zh/guide/,从安装、租户、任务类型到告警渠道都有分章节的图文讲解;想读源码的话,流程状态机在dolphinscheduler-master/,任务执行框架在dolphinscheduler-task-executor/,告警渠道插件在dolphinscheduler-alert/dolphinscheduler-alert-plugins/,注册中心与 SPI 机制分别在dolphinscheduler-registry/dolphinscheduler-spi/。遇到具体问题或想提改进,社区入口是仓库的 Issues 区,直接搜索同类关键词往往能找到现成的讨论。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询