Apache DolphinScheduler 快速上手:从零构建并运行你的第一个工作流
2026/9/23 22:37:27 网站建设 项目流程
  • 任务调度
  • 大数据
  • 后端
  • 前端

【免费下载链接】dolphinscheduler

Apache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code

项目地址:https://gitcode.com/gh_mirrors/do/dolphinscheduler
点击查看免费下载

本篇指南基于 DolphinScheduler 官方快速上手文档,带你走完一条完整的入门路径:安装启动服务 → 登录 Web UI → 创建租户并分配给用户 → 创建项目与工作流 → 用拖拽方式编排 Shell 任务与依赖 → 运行工作流并查看任务日志。读完本文,你将掌握 DolphinScheduler 中「用户 / 租户 / 项目 / 工作流 / 任务 / 工作流实例」这些核心概念的实际用法,能够独立搭建环境并跑通第一个可观测的 DAG 工作流。

开始之前:安装并启动 DolphinScheduler

在创建任何工作流之前,必须先安装并启动 DolphinScheduler。对初学者而言,官方推荐两种最省事的启动方式:Standalone Server(单机极速体验)和Docker 镜像

方式一:Standalone Server 极速体验

Standalone 模式把所有服务打包在一个进程中,使用内存数据库 H2 与内嵌的 Zookeeper Testing Server,无需额外安装任何依赖组件,是最快的上手方式。

  1. 安装 JDK 1.8 或 11,并配置JAVA_HOME环境变量;
  2. 在官方下载页面获取 DolphinScheduler 二进制包;
  3. 解压并启动:
tar -xvzf apache-dolphinscheduler-*-bin.tar.gz chmod -R 755 apache-dolphinscheduler-*-bin cd apache-dolphinscheduler-*-bin bash ./bin/dolphinscheduler-daemon.sh start standalone-server

启动后,浏览器访问 http://localhost:12345/dolphinscheduler/ui 即可进入登录页,默认账号为admin,默认密码为dolphinscheduler123

日常维护同样通过dolphinscheduler-daemon.sh脚本完成,该脚本位于仓库 script/dolphinscheduler-daemon.sh,完整命令如下:

# 启动 Standalone Server 服务 bash ./bin/dolphinscheduler-daemon.sh start standalone-server # 停止 Standalone Server 服务 bash ./bin/dolphinscheduler-daemon.sh stop standalone-server # 查看 Standalone Server 状态 bash ./bin/dolphinscheduler-daemon.sh status standalone-server

注意:Standalone 模式仅建议在 20 个以下工作流的场景使用。它采用内存式 H2 数据库和 Zookeeper Testing Server,任务过多可能导致不稳定;一旦重启或停止 standalone-server,内存数据库中的数据会被清空。Standalone 也支持元数据持久化,但需要切换外部数据库(如 MySQL 或 PostgreSQL)。默认资源中心目录为/tmp/dolphinscheduler,如需修改可调整conf/common.properties中 resource 相关配置项。

方式二:Docker 一键启动

如果你希望体验更完整的服务形态(独立的 API、Master、Worker、Alert 组件,以及 PostgreSQL 与 ZooKeeper 依赖),推荐使用 Docker。仓库自带的编排文件位于 deploy/docker/docker-compose.yml,从其中可以看到 API 服务将12345端口映射到宿主机,并通过/dolphinscheduler/actuator/health做健康检查。

# 1. 拉取源码包并进入 docker 部署目录 tar -zxf apache-dolphinscheduler-<version>-src.tar.gz cd apache-dolphinscheduler-<version>-src/deploy/docker # 2. 首次启动先初始化(或升级)数据库结构,profile 指定为 schema docker-compose --profile schema up -d # 3. 再启动全部服务,profile 指定为 all docker-compose --profile all up -d

若只想最快体验,也可以直接使用 standalone-server 镜像:

docker run --name dolphinscheduler-standalone-server \ -p 12345:12345 -p 25333:25333 \ -d apache/dolphinscheduler-standalone-server:<version>

注意:apache/dolphinscheduler-standalone-server镜像不应用于生产环境。除了它将全部服务运行在单进程中外,还因为它使用内存数据库 H2 存储元数据(服务停止即清空);并且该镜像仅包含核心服务,Spark、Flink 等部分任务组件及 Telegram、Dingtalk 等告警组件需要外部组件或额外配置才能使用。docker-compose 方式则会将 PostgreSQL 与 ZooKeeper 一并拉起,各服务独立容器运行、相互影响最小,重启服务时可保留元数据。更完整的 Docker 部署细节(包括沿用已有 PostgreSQL / ZooKeeper 的环境变量启动方式)见 Docker 快速使用教程 与 Standalone 极速体验版。

理解两个关键角色:用户与租户

登录 Web UI 的admin账号在 DolphinScheduler 中被称为用户(User)。为了更精细地控制系统资源,DolphinScheduler 引入了租户(Tenant)概念:

  • 用户(User):登录 Web UI,在界面中执行所有操作,包括工作流管理、租户创建等;
  • 租户(Tenant):任务的实际执行者,对应 Worker 节点上的一个 Linux 用户,任务最终会以该 Linux 用户身份运行。

也就是说,用户在界面上「编排」,租户在系统层面「执行」。这一设计在数据库初始化脚本 dolphinscheduler_postgresql.sql 中体现得很清楚:t_ds_tenant表以tenant_code(租户编码,对应 Linux 用户)为核心字段,并关联了queue_id(队列);而t_ds_user表(dolphinscheduler_postgresql.sql)通过tenant_id字段与租户关联。

默认数据中已经内置了一个default租户(tenant_id = -1)和一个超级用户admin(其tenant_id同样为-1,见 dolphinscheduler_postgresql.sql)。因此,如果没有给用户关联租户,任务会使用默认租户 default,以程序启动用户身份执行——这也是新手最容易踩的坑:任务执行权限可能不符合预期。

第一步:创建租户

进入Security -> Tenant Manage(安全中心 → 租户管理)页面,点击「创建租户」按钮,填写租户编码(对应 Linux 用户)、队列等信息即可完成创建。

注意:如果没有关联租户,则会使用默认租户 default,任务将以程序启动用户执行。

第二步:将租户分配给用户

正如上一步所述,用户只有在被分配到某个租户之后,才能以该租户身份运行任务。在Security -> User Manage(安全中心 → 用户管理)页面中找到目标用户,编辑并为其指定一个租户即可完成分配。

完成「创建租户」并「分配给用户」这两步后,就有了运行工作流的权限基础,接下来开始编排第一个工作流。

第三步:创建项目

在 DolphinScheduler 中,所有工作流都必须归属于某个项目,项目是工作流的分组与权限边界。在Project(项目管理)页面点击「创建项目」按钮,输入项目名称(本教程命名为tutorial)即可。

第四步:创建工作流

点击刚创建的项目进入项目详情,切换到「工作流定义」页面,点击「创建工作流」按钮,页面会跳转到工作流画布(DAG 编辑页)。所有任务编排都在这块画布上完成。

第五步:创建任务

在工作流画布左侧的工具栏中,用鼠标把要创建的任务类型拖拽到画布上。本教程以Shell 任务为例——这也是最基础、最能说明执行原理的任务类型。

在弹出的任务配置表单中,为任务填写必要信息:

  • 节点名称:第一个任务填script之类的名称即可(本教程中填「脚本」);
  • 脚本内容:第一个任务打印Hello DolphinScheduler,第二个任务打印Ending...

填写完成后点击「确认」把任务保存到工作流中,再用相同方式创建第二个任务。最终工作流中包含两个任务,它们目前是相互独立的,还没有先后关系。

从源码层面看,Shell 任务的执行逻辑封装在 ShellTask.java:任务初始化时会将 JSON 格式的任务参数解析为ShellParameters并校验参数合法性(checkParameters()),执行阶段则通过ShellInterceptorBuilderFactory构建脚本拦截器,把prepareParamsMap中的参数注入脚本后交给ShellCommandExecutor运行;执行完成后根据返回的退出码(exitStatusCode)判定任务成败。这解释了为什么任务配置里的脚本可以引用全局参数与系统参数——它们在执行前会被统一替换注入。

第六步:设置任务依赖

两个任务已经就位,但还缺少「先后顺序」。在 DolphinScheduler 中,任务依赖通过画布上的连线(DAG 边)来表达:

  1. 鼠标移动到上游任务节点的右侧锚点;
  2. 按住鼠标左键,将箭头拖拽到下游任务节点上;
  3. 松开鼠标,两个任务之间就会出现一条有向箭头,表示「上游完成 → 下游开始」的依赖关系。

连线完成后,点击画布右上角的「保存」按钮,并在弹出的对话框中填写工作流名称(建议与项目语义一致),工作流即定义完成。

提示:DolphinScheduler 的工作流本质上就是一个有向无环图(DAG),多个任务之间可以自由连线形成串行、并行、条件分支等多种拓扑,本教程的串行依赖是最基础的形态。

第七步:运行工作流

工作流定义保存后,回到「工作流定义」列表页,需要经过两个动作才能触发运行:

  1. 上线(Online):点击工作流条目右侧的「上线」按钮,将工作流置为可调度状态;
  2. 运行(Run):点击「运行」按钮触发一次手动执行。

运行后,进入「工作流实例」页面即可看到刚触发的工作流实例正在运行,状态显示为Executing(执行中)。工作流实例是对一次具体执行过程的记录,包含了该次运行的状态、开始时间、耗时等运行时信息。

第八步:查看任务日志

工作流实例执行过程中,可以查看其中每个任务的详细运行日志:

  1. 在「工作流实例」列表中点击该实例,进入实例详情(DAG 视图);
  2. 找到要查看日志的任务节点,右键点击;
  3. 在弹出的上下文菜单中选择View Log(查看日志)。

在日志中可以看到任务打印的内容——本教程中任务定义的两个 Shell 任务会分别输出Hello DolphinSchedulerEnding...,与你之前在任务脚本中定义的内容一致。日志是排查任务失败原因的第一现场,DolphinScheduler 为每个任务独立记录日志,并支持在线查看与下载。

一条完整的自动化验证链路

上述「登录 → 创建租户 → 分配用户 → 创建项目 → 创建 Shell 工作流 → 发布 → 运行 → 查看实例」的完整链路,在仓库的端到端测试中得到了程序化验证:E2E 用例 WorkflowE2ETest.java 使用admin/dolphinscheduler123登录,依次创建租户、为用户更新租户、创建项目、以 Shell 任务创建工作流(脚本中使用了${today}等内置参数)并发布,随后断言工作流出现在列表中——这与本文的图文流程完全一一对应。如果你希望用自动化方式回归这套流程,可以直接参考该测试的编排顺序。

小结与下一步

至此,你已经完成了 DolphinScheduler 的第一个教程:掌握了从服务启动、登录、租户与用户配置,到项目、工作流、任务、依赖、运行与日志查看的完整闭环,能够独立运行简单的工作流了。

在此基础上,可以继续深入:查看 Docker 快速使用教程 体验更完整的服务形态,或阅读 Standalone 极速体验版 了解元数据库切换与配置细节;当需要把工作流接入真实调度时,可进一步参考伪集群、集群与 Kubernetes 部署方案,以及任务插件、告警插件等扩展能力。

  • 任务调度
  • 大数据
  • 后端
  • 前端

【免费下载链接】dolphinscheduler

Apache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code

项目地址:https://gitcode.com/gh_mirrors/do/dolphinscheduler
点击查看免费下载

相关推荐

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

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

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

立即咨询