Apache DolphinScheduler 文件管理(资源中心)实战指南:创建、上传与在 Shell 工作流中引用资源文件

发布时间:2026/9/15 0:17:33
Apache DolphinScheduler 文件管理(资源中心)实战指南:创建、上传与在 Shell 工作流中引用资源文件 Apache DolphinScheduler 文件管理资源中心实战指南创建、上传与在 Shell 工作流中引用资源文件【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler导读文件管理是 Apache DolphinScheduler 资源中心Resource Center的核心能力用于在调度过程中承载第三方 Jar 包、自定义脚本等资源。本文将基于官方文档完整讲解文件管理页面的创建、上传、查看、下载、重命名、删除六类基础操作并结合仓库源码REST API 与前端组件剖析其实现机制最后通过一个hello.sh示例演示如何在 Shell 工作流中引用资源文件。读完本文你将掌握资源文件的完整生命周期管理以及资源路径与脚本引用必须一致这一关键约定。什么是文件管理当调度流程中需要使用第三方 Jar 包或者用户需要自定义脚本例如 Shell、Python、SQL时都可以在文件管理页面完成。文件管理页面位于前端资源中心 文件管理对应路由/resource/file-manage该路由在前端路由表 dolphinscheduler-ui/src/router/modules/resources.ts 中定义页面组件为 dolphinscheduler-ui/src/views/resource/file/index.tsx它通过ResourceListModal resourceType{FILE} /复用统一的资源列表组件渲染。可管理的文件类型包括txt、log、sh、conf、py、java等可对文件执行编辑、重命名、下载和删除操作。注意以admin身份管理文件时需要先为admin配置租户Tenant否则资源目录可能无法正常初始化与读写。从源码层面看文件管理的前端页面通过一组 REST 接口与后端交互全部定义在 ResourcesController 中接口根路径为resources。文件实际存储在资源中心配置的存储后端上存储类型由 common.properties 中的resource.storage.type决定默认值为LOCAL可选值包括LOCAL、HDFS、S3、OSS、GCS、ABS、OBS、COS。基础操作文件管理页面在列表头部提供创建文件夹 / 创建文件 / 上传文件三个按钮并支持关键字搜索与分页浏览相关交互实现可参见 dolphinscheduler-ui/src/views/resource/components/resource/index.tsx。以下逐一说明六类基础操作。创建文件Create File在文件管理页面点击创建文件按钮在弹出表单中填写文件名、选择文件类型并输入内容即可在线创建文件。文件格式扩展名支持以下类型txt、log、sh、conf、cfg、py、java、sql、xml、hql、properties在线创建文件的后端接口为POST /resources/online-create从 ResourcesController#createFileFromContent 可以看到该接口接收type、fileName、suffix、content、currentDir等参数后端将fileName与suffix拼接为完整文件名fileName . fileSuffix后写入资源存储。上传文件Upload File点击上传文件按钮后将本地文件拖拽到上传区域即可完成上传上传后文件名称会自动与本地文件名保持一致无需手动填写。上传对应的后端接口为POST /resources见 createFile接收type、name、fileMultipartFile、currentDir四个参数并带有FILE_CREATE类型的审计日志OperatorLog(auditType AuditType.FILE_CREATE)即每次上传文件都会被记录到操作审计中。查看文件View File对于支持查看的文件类型直接点击列表中该文件的名称即可进入文件详情页查看内容。后端通过GET /resources/view接口提供文件内容读取能力该接口支持skipLineNum与limit参数用于分页拉取文件内容见 viewResource。下载文件Download File下载文件有两种方式在文件列表中点击对应行的下载按钮进入文件详情页后点击右上角的下载按钮。下载功能由GET /resources/download接口实现后端将指定fullName路径下的文件写入HttpServletResponse返回给浏览器见 downloadResource。重命名文件Rename File在文件列表中点击重命名按钮弹出重命名表单修改文件名后保存即可。重命名操作由PUT /resources接口统一处理见 updateResource。从源码可以看到后端会根据请求参数自动区分三种场景目标名无扩展名Files.getFileExtension(resourceName)为空→ 视为重命名目录调用renameDirectory目标名有扩展名但未附带文件file null→ 视为重命名文件调用renameFile附带上传文件→ 视为更新文件内容调用updateFile。删除文件Delete File在文件列表中点击对应行的删除按钮即可删除指定文件。删除接口为DELETE /resources见 deleteResource接收资源完整路径fullName并带有FILE_DELETE类型的审计日志。注意在资源中心执行上传、创建或重命名操作时文件名称或本地源文件名不能包含.或/等特定字符否则操作会失败。在重命名逻辑中文件名中的扩展名也会被用于区分重命名文件与重命名目录两种行为。示例在 Shell 工作流中使用资源文件本示例用一个简单的 Shell 脚本来演示如何在项目管理的工作流定义中使用资源中心文件管理的文件。对于需要 Jar 包的 MR、Spark 等任务使用方法同理在任务的资源参数中选择对应 Jar 资源即可。第 1 步创建 Shell 文件在文件管理页面点击创建文件文件类型选择sh创建内容为打印hello world的脚本例如#!/bin/bash echo hello world创建完成后文件会以resource/hello.sh这样的路径形式出现在资源中心。第 2 步创建工作流并配置 Shell 任务在项目管理的工作流定义模块中新建一个工作流添加一个 Shell 任务并按如下配置脚本Scriptsh resource/hello.sh资源Resource选择resource/hello.sh注意关键约定在脚本中使用资源文件时脚本内引用的文件名必须与所选择资源的完整路径完全一致。 例如资源路径为resource/hello.sh那么脚本中就必须使用resource/hello.sh这一完整路径而不能只写hello.sh或其它不完整的相对路径否则任务执行时无法定位到该资源文件。这一脚本内引用路径 所选资源完整路径的约束源于 DolphinScheduler 任务执行时会按资源完整路径将所选资源下发到执行节点的机制工作流中的 Shell、MR、Spark、Python 等任务均遵循同一规则。第 3 步查看运行结果保存并运行工作流后进入工作流实例点击对应节点的日志即可查看 Shell 脚本的执行输出。日志中应能看到脚本打印的hello world内容说明资源文件已被正确下发并执行成功。小结文件管理资源中心为 DolphinScheduler 提供了统一的脚本与依赖资源承载能力支持txt、log、sh、conf、cfg、py、java、sql、xml、hql、properties等类型的在线创建、上传、查看、下载、重命名与删除。从实现角度看这些操作分别映射到ResourcesController中的POST /resources/online-create、POST /resources、GET /resources/view、GET /resources/download、PUT /resources、DELETE /resources等 REST 接口并全部带有操作审计记录。在实际调度编排中只需记住脚本中引用的路径必须与所选资源完整路径一致这一约定即可在 Shell、MR、Spark 等各类任务中灵活复用资源文件。如需进一步了解文件管理的界面细节可继续阅读 docs/docs/en/guide/resource/file-manage.md若想深入资源存储配置可查看 common.properties 中的resource.storage.type等参数说明。【免费下载链接】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),仅供参考