10分钟跑通DolphinScheduler:拖拽编排分布式任务调度
2026/9/16 22:57:26 网站建设 项目流程

10分钟跑通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

晚上10点,跑了一半的ETL挂了,没人知道,第二天报表准时迟到。把散落各处的cron脚本挪进Apache DolphinScheduler这个分布式任务调度平台后,任务依赖、失败重试、执行告警都在一张DAG画布上看得见,谁负责跑、什么时候跑、挂了通知谁,都有地方可查。它面向的就是数据团队和后端工程师:用低代码的方式编排复杂工作流,替代手写crontab加脚本的"土法"。

DolphinScheduler 系统全景:API、Master 与 Worker 各自干什么 🧩

先看一眼整体结构,理解后文所有操作时你只需要分清四个角色:

UI、API、Master、Worker 核心组件关系

  • 项目:所有工作流的归属容器,权限和资源都挂在项目上。
  • 工作流(DAG):有向无环图,任务按依赖关系先后执行,画布上拖出来是什么样,运行就是什么顺序。
  • Master / Worker:Master 负责拆分流程、派发任务,Worker 负责真正执行。打个比方,Master 是派活的工头,Worker 是干活的工人,工头挂了另有工头顶上。
  • 租户:任务实际使用的 Linux 系统用户,Worker 会以这个身份在服务器上跑你的脚本。

多种任务类型按依赖关系组成的 DAG

落地部署:Standalone 镜像一条命令起服务 🐳

最快的体验路径是直接拉官方的 standalone-server 镜像,它把 API、Master、Worker 塞进一个进程,一条命令就能开跑。下面这段命令启动容器并映射 12345 端口(把<version>换成你要安装的版本号):

DOLPHINSCHEDULER_VERSION=<version> docker run --name dolphinscheduler-standalone-server \ -p 12345:12345 -d \ apache/dolphinscheduler-standalone-server:${DOLPHINSCHEDULER_VERSION}

执行后你会看到容器进入 Running 状态,稍等片刻访问http://localhost:12345/dolphinscheduler/ui就能打开登录页,默认账号密码是admin/dolphinscheduler123

⚠️ 注意:standalone 镜像用内存数据库 H2 存元数据,容器一停数据就清空,只适合体验功能,别当生产镜像用。

想要组件分离、元数据落盘的部署,仓库里deploy/docker/docker-compose.yml已备好:clone 仓库后进入该目录,先docker-compose --profile schema up -d初始化数据库,再docker-compose --profile all up -d拉起全部组件(该 compose 文件会从同目录.env读取镜像仓库和版本变量,缺少时用官方发行包里的 docker 目录补齐)。大规模生产环境则用deploy/kubernetes/dolphinscheduler下的 Helm Chart 部署。

核心场景:从登录到跑通第一个 Shell 工作流 🖱️

登录之后,第一步不是建流程,而是建租户。在左侧菜单进入「安全中心 → 租户管理」,输入租户名(比如ds_tenant),系统会在 Linux 上创建对应的执行用户:

租户管理:创建任务执行用户

接着进「用户管理」,把刚建的租户关联到 admin 账号。

用户管理:把租户分给 admin

⚠️ 注意:用户没关联租户时,任务会落到默认租户 default 下、用程序启动用户执行;想精确控制任务身份,这一步别跳过。

租户就位后,到「项目管理」页面点「创建项目」,起个名字(比如demo_etl)并把自己设为管理员。

创建项目:工作流的归属容器

进入项目,在「工作流定义」页点「创建工作流」,会跳进 DAG 画布。把左侧工具栏的 Shell 任务拖到画布,节点名填hello_ds,脚本内容写echo "Hello DolphinScheduler",点右上角保存。再用同样方式拖出第二个 Shell 节点,把鼠标从上游节点拖向下游节点,一条带箭头的依赖线就建好了——这条线决定了两个任务的执行顺序。

DAG 画布:拖拽任务节点并建立依赖

⚠️ 注意:只有点「上线」的工作流才能运行,画布上保存 ≠ 可执行,这是新手最常漏掉的一步。

回到工作流列表,对新流程点「上线」,再点「运行」,并选一次补数日期(默认当天即可):

工作流列表:先上线、再运行

切到「工作流实例」页,能看到实例状态从「执行中」变为「成功」,两个节点按依赖顺序依次跑完。想核对输出,点开实例找到目标任务,右键「查看日志」:

工作流实例:查看执行状态

日志里打印出Hello DolphinScheduler,和你脚本里写的一致,第一个流程就通了。

任务日志:核对脚本输出

手动跑通后,再给流程加个定时。在工作流配置里打开定时设置,填 Quartz 风格的 CRON 表达式,比如每天凌晨 2 点触发:

0 0 2 * * ?

保存后工作流就会按这个周期自动生成实例,补数和定时互不冲突:

定时配置:拖拽设置 CRON 周期

进阶调优:插件、Worker 组与失败告警 🎛️

现象:启动 Worker 或跑任务时报ClassNotFoundException3.3.0 起二进制包不再捆绑任务插件依赖,缺哪个补哪个——在发行包目录执行bash bin/install-plugins.sh <version>安装插件依赖,再按需修改conf/plugins_config里的--task-plugins--白名单,只留你真正用到的任务类型(比如dolphinscheduler-task-shell),启动时就不会再加载无关插件。

现象:重任务和轻任务互相挤占,Spark 作业一跑,小 SQL 任务延迟明显。在「安全中心」里建独立的 Worker 组,并把重任务项目绑定到该组(项目级 Worker 组授权见「项目管理 → 权限」),重活轻活分流到不同机器上执行,互不拖后腿。

现象:任务半夜失败,第二天开会才发现。到「告警中心」创建告警实例(邮件、企业微信、钉钉、飞书等渠道各有插件),再在工作流定义里给流程配上失败告警策略,失败时按策略推送通知,不用人肉盯实例列表。

高频疑问:这三个问题最卡人 ❓

Q:standalone 镜像里建的工作流重启后不见了?A:正常现象,它用内存 H2 库存元数据,停容器即清空。需要留存数据改用 docker-compose 方式接 PostgreSQL。

Q:忘记默认账号密码了,怎么进系统?A:默认账号admin,密码dolphinscheduler123,入口http://localhost:12345/dolphinscheduler/ui

Q:任务想用特定 Linux 身份执行,在哪设置?A:「安全中心 → 租户管理」建租户,再到「用户管理」把租户分配给用户,Worker 会以租户身份跑任务。

DolphinScheduler 比较适合这种场景:任务之间有明确依赖、需要定时或补数、执行环境是公司自有服务器上的大数据链路(Hadoop、Spark、Flink、各类 SQL)。反过来,如果只是一两个互相独立的 crontab 小脚本,或者任务必须跑在托管服务上不想自己管机器,引入一套 Master/Worker 集群的开销就不划算了。

想往下深入,中文用户手册在 docs/docs/zh/guide/(安装、任务类型、参数化都有分章),任务插件的源码在 dolphinscheduler-task-plugin/ 下,每个任务类型一个模块,挑一个你常用的看看它是怎么被执行器的,比看十篇介绍都直观。

第一个Hello 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

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询