ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Apache DolphinScheduler 资源中心(Resource Center)完全指南:文件管理、任务组与多存储后端集成

Apache DolphinScheduler 资源中心(Resource Center)完全指南:文件管理、任务组与多存储后端集成 任务调度大数据后端前端【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址https://gitcode.com/gh_mirrors/do/dolphinscheduler点击查看免费下载资源中心是 Apache DolphinScheduler 中承载文件上传与任务组管理两大能力的核心模块它既为工作流提供第三方 jar、自定义脚本等资源文件的集中管理也通过任务组对任务实例的并发执行进行配额控制。本文将以资源中心为切入点完整梳理其存储后端选型本地目录 / Hadoop HDFS / MinIO / S3 / OSS / OBS 等、common.properties关键配置项、文件管理操作以及任务组的实现逻辑帮助你快速上手并在生产环境正确落地。资源中心是什么根据官方文档 资源中心简介 的定义资源中心通常用于上传文件和任务组管理两大场景文件管理当调度过程中需要使用第三方 jar 或用户自定义脚本时可以在资源中心统一上传、创建、编辑、重命名、下载与删除文件供工作流中的各类任务Shell、MR、Spark 等引用任务组管理通过为任务实例分配任务组限制其并发数量从而控制集群或其他外部资源的压力。存储后端方面资源中心提供多层次的接入方式本地文件系统standalone单机环境可以直接把本地目录作为上传文件夹不需要部署 Hadoop开箱即用分布式文件系统可以对接 Hadoop HDFS2.6或 MinIO 集群远端对象存储支持对接 AWS S3、阿里云 OSS、华为云 OBS、Google GCS、Azure ABS 等。从源码层面看存储类型由 StorageType.java 枚举定义共支持LOCAL、HDFS、OSS、S3、GCS、ABS、OBS七种类型并提供了getStorageType(String name)用于将配置字符串解析为对应枚举值。实际存储能力则由存储插件体系承载插件 API 定义在 dolphinscheduler-storage-api 中具体的本地、HDFS、S3、OSS、OBS 等实现分别位于dolphinscheduler-storage-plugin下的对应子模块。资源中心的存储配置common.properties资源中心的存储行为完全由common.properties驱动该文件的模板位于 dolphinscheduler-common/src/main/resources/common.properties部署时会被复制到各服务的conf目录下。配置生效路径与部署模式有关集群 / 伪集群模式需要同时配置api-server/conf/common.properties和worker-server/conf/common.properties单机standalone模式只需配置standalone-server/conf/common.properties。注意只配置 api-server 侧的common.properties只能开启资源上传操作若要让工作流执行这些资源文件还必须同步配置 worker-server 侧的common.properties。核心配置项配置项默认值说明resource.storage.typeLOCAL资源存储类型可选LOCAL、HDFS、S3、OSS、GCS、ABS、OBS。LOCAL 为默认类型本质上是resource.storage.typeHDFS且resource.hdfs.fs.defaultFSfile:///的组合写法单独提供 LOCAL 是为了方便用户并保证本地资源中心默认开启resource.storage.upload.base.path/tmp/dolphinscheduler资源文件在存储上的基础路径。配置为本地路径时请确保部署 DolphinScheduler 的用户对该目录拥有读写权限路径不存在时会自动创建文件夹。若不想使用默认值请务必修改此项resource.hdfs.root.userhdfs当resource.storage.typeHDFS时该用户必须拥有在 HDFS 根路径下创建目录的权限resource.hdfs.fs.defaultFShdfs://mycluster:8020HDFS 的默认文件系统地址。当resource.storage.typeS3时此处的值形如s3a://dolphinschedulerhadoop.security.authentication.startup.statefalse是否启用 Kerberos 认证配套还有java.security.krb5.conf.path、login.user.keytab.username、login.user.keytab.path、kerberos.expire.time等参数这些常量在源码中由 Constants.java 定义例如RESOURCE_STORAGE_TYPE resource.storage.type与RESOURCE_UPLOAD_PATH resource.storage.upload.base.path最终会被资源中心的服务端代码读取并据此初始化对应的存储操作器。对接本地文件系统LOCALLOCAL 模式默认开启无需额外配置即可使用。若需要修改存储路径将resource.storage.upload.base.path改为目标本地目录即可resource.storage.typeLOCAL resource.storage.upload.base.path/tmp/dolphinscheduler需要特别注意 LOCAL 模式的限制LOCAL 模式不支持分布式读写上传的资源只能在一台机器上使用除非使用共享文件挂载点如 NFS集群模式下若选择 LOCAL各节点必须能访问同一份共享目录否则 Worker 无法读取到 API 上传的资源文件若不想使用默认值作为基础路径必须显式修改resource.storage.upload.base.path。对接 Hadoop HDFS / MinIO对接 HDFS 时将存储类型切换为HDFS并配置 NameNode 地址resource.storage.typeHDFS resource.storage.upload.base.path/dolphinscheduler resource.hdfs.root.userhdfs resource.hdfs.fs.defaultFShdfs://mycluster:8020若 Hadoop 集群的 NameNode 配置了 HA需要开启 HDFS 类型的资源上传同时将 Hadoop 集群的core-site.xml和hdfs-site.xml复制到worker-server/conf以及api-server/conf非 NameNode HA 场景可跳过此步骤。资源上传功能要求部署用户具备相应操作权限可参考安装部署文档。MinIO 兼容 S3 协议因此对接 MinIO 时通常使用 S3 存储类型并配置 MinIO 的 endpoint见下节。对接 AWS S3含 MinIO使用 S3 上传资源需要同时配置api-server/conf/common.properties、api-server/conf/aws.yaml与worker-server/conf/common.properties、worker-server/conf/aws.yaml。先在common.properties中声明存储类型resource.storage.typeS3再在aws.yaml中配置访问凭证与桶信息aws: s3: # The AWS credentials provider type. support: AWSStaticCredentialsProvider, InstanceProfileCredentialsProvider # AWSStaticCredentialsProvider: use the access key and secret key to authenticate # InstanceProfileCredentialsProvider: use the IAM role to authenticate credentials.provider.type: AWSStaticCredentialsProvider access.key.id: access.key.id access.key.secret: access.key.secret region: region bucket.name: bucket.name endpoint: endpoint凭证提供方式有两种AWSStaticCredentialsProvider使用 Access Key / Secret Key 静态认证InstanceProfileCredentialsProvider使用 IAM 角色认证。对接自建的 MinIO 或兼容 S3 协议的对象存储时将endpoint指向对应的服务地址即可此时resource.hdfs.fs.defaultFS需要形如s3a://dolphinscheduler。对接阿里云 OSS使用 OSS 只需在api-server/conf/common.properties和worker-server/conf/common.properties中配置无需额外的 yaml 文件# alibaba cloud access key id, required if you set resource.storage.typeOSS resource.alibaba.cloud.access.key.idyour-access-key-id # alibaba cloud access key secret, required if you set resource.storage.typeOSS resource.alibaba.cloud.access.key.secretyour-access-key-secret # alibaba cloud region, required if you set resource.storage.typeOSS resource.alibaba.cloud.regioncn-hangzhou # oss bucket name, required if you set resource.storage.typeOSS resource.alibaba.cloud.oss.bucket.namedolphinscheduler # oss bucket endpoint, required if you set resource.storage.typeOSS resource.alibaba.cloud.oss.endpointhttps://oss-cn-hangzhou.aliyuncs.com对接华为云 OBS同理OBS 的配置项集中在common.properties# access key id, required if you set resource.storage.typeOBS resource.huawei.cloud.access.key.idyour-access-key-id # access key secret, required if you set resource.storage.typeOBS resource.huawei.cloud.access.key.secretyour-access-key-secret # oss bucket name, required if you set resource.storage.typeOBS resource.huawei.cloud.obs.bucket.namedolphinscheduler # oss bucket endpoint, required if you set resource.storage.typeOBS resource.huawei.cloud.obs.endpointobs.cn-southwest-2.huaweicloud.com挂载方案本地方式操作远端对象存储除了直接对接对象存储 SDK官方还提供了另一种集群模式下的接入思路使用 S3FS-FUSE 将 S3 挂载到本地、或使用 JINDO-FUSE 将 OSS 挂载到本地再用资源中心对接本地文件系统的方式操作远端对象存储中的文件。该方案适合已有成熟挂载组件的团队可以复用 LOCAL 模式的全部能力。更多存储类型从 StorageType.java 与 common.properties 可以看到资源中心还支持 Google GCS配置resource.google.cloud.storage.credential与resource.google.cloud.storage.bucket.name和 Azure ABS配置resource.azure.blob.storage.container.name、resource.azure.blob.storage.account.name、resource.azure.blob.storage.connection.string覆盖主流公有云场景。文件管理上传、创建与在工作流中使用当调度过程中需要第三方 jar 或自定义脚本时进入 Web UI 的【资源中心】-【文件管理】页面即可完成管理。详细操作见 文件管理。基础操作创建文件支持txt、log、sh、conf、cfg、py、java、sql、xml、hql、properties等格式模板中还预留了json、yml、yaml、ini、js等查看后缀可通过resource.view.suffixs扩展可预览的文件类型上传文件点击上传文件按钮将文件拖拽到上传区域即可文件名会自动以本地文件名补全文件查看对可查看的文件类型点击文件名称可查看文件详情下载文件在文件列表或文件详情页右上角点击下载按钮文件重命名在文件列表中重命名指定文件删除文件在文件列表点击删除按钮删除指定文件。注意以admin身份登入并操作文件时需要先给admin设置租户。任务样例在工作流中使用资源文件以 Shell 任务为例演示资源中心文件的引用方式MR、Spark 等任务使用 jar 包同理创建 shell 文件在资源中心创建一个输出 hello world 的hello.sh脚本创建工作流在项目管理的工作流定义模块创建一个新工作流添加 Shell 任务配置如下脚本sh resource/hello.sh资源选择resource/hello.sh查看结果运行工作流后可在工作流实例的节点日志中查看输出。关键约束脚本中引用资源文件时文件名称必须与所选资源全路径保持一致。例如资源路径为resource/hello.sh则脚本内调用也必须使用完整的resource/hello.sh路径。任务组管理并发控制与实现原理任务组主要用于控制任务实例并发旨在控制其他资源的压力也可控制 Hadoop 集群压力不过集群通常还有队列管控。相关操作与原理详见 任务组管理。任务组的作用范围在新建任务定义时可配置对应的任务组并配置任务在任务组内运行的优先级用户仅能查看有权限的项目对应的任务组且仅能创建或修改具有写权限的项目对应的任务组任务组对资源的限制是项目级别的与租户没有关系。新建任务组入口为【资源中心】-【任务组管理】-【任务组配置】- 新建任务组需要填写三个字段字段说明任务组名称任务组在被使用时显示的名称项目名称任务组作用的项目非必填不选择则整个系统所有项目均可使用该任务组资源容量允许任务实例并发的最大数量新建完成后可通过【查看任务组队列】按钮查看任务组使用信息与排队情况。任务组的使用任务组的使用适用于由 Worker 执行的任务【switch】节点、【condition】节点、【sub_process】等由 Master 负责执行的节点类型不受任务组控制。以 Shell 节点为例在任务定义中只需配置任务组名称任务组配置页面显示的任务组名称此处只能看到该项目有权限的任务组新建任务组时选择了该项目或作用在全局的任务组新建任务组时没有选择项目组内优先级在出现等待资源时优先级高的任务会最先被 Master 分发给 Worker 执行数值越大优先级越高。任务组的实现逻辑从源码看任务组的协调由 Master 侧的核心组件承担。在 WorkflowExecuteRunnable.java 中Master 分发任务时若taskInstance.getTaskGroupId() 0会调用taskGroupCoordinator.acquireTaskGroupSlot(taskInstance)尝试获取任务组槽位见 WorkflowExecuteRunnable.java获取不到则进入等待任务结束时会调用releaseTaskGroupSlot释放槽位并唤醒等待队列见 WorkflowExecuteRunnable.java任务组内优先级由BaseTaskExecuteRunnable中的比较器实现taskGroupPriority数值越大排序越靠前见 BaseTaskExecuteRunnable.java。这与官方文档描述的逻辑完全一致获取任务组资源Master 在分发任务时判断该任务是否配置了任务组。若未配置正常抛给 Worker 运行若配置了任务组则在抛给 Worker 执行前检查任务组资源池剩余大小是否满足当前任务运行——满足则资源池 -1 继续运行不满足则退出任务分发等待其他任务结束唤醒释放与唤醒当获取到任务组资源的任务结束运行后会释放任务组资源释放后检查当前任务组是否有任务等待若有则标记优先级最好的任务可以运行并新建一个可执行的 event该 event 中存储着被标记可获取资源的任务 id随后该任务再获取任务组资源并运行。服务端对应的接口实现在 TaskGroupServiceImpl.java 与 TaskGroupQueueServiceImpl.java 中负责任务组的增删改查与队列状态的维护。生产实践建议结合以上配置与源码给出几点实践建议单机体验优先 LOCALstandalone 模式无需任何外部依赖即可体验完整资源中心能力适合功能验证与快速上手集群部署必须保证存储一致LOCAL 模式在多节点下只能配合共享挂载点使用否则 API 上传的资源 Worker 不可见生产集群建议直接对接 HDFS、S3 或 MinIO 等分布式存储API 与 Worker 配置必须同步只配置 API 侧只能上传资源工作流执行还需要 Worker 侧具备相同配置HDFS HA 需要补齐 xml 配置NameNode 启用 HA 时务必把core-site.xml与hdfs-site.xml同步到 api-server 与 worker-server 的 conf 目录用任务组保护下游压力对下游系统敏感的批处理任务通过任务组限制并发并配置组内优先级比单纯依赖集群队列更精细可控。赞分享任务调度大数据后端前端【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址https://gitcode.com/gh_mirrors/do/dolphinscheduler点击查看免费下载相关推荐Apache DolphinScheduler 资源中心Resource Center完全指南本地存储、对象存储接入与任务组并发控制Apache DolphinScheduler 资源中心Resource Center完全指南本地存储、对象存储接入与任务组并发控制 资源中心Resou任务调度大数据后端前端Apache DolphinScheduler 资源中心完全指南文件管理与任务组实战Apache DolphinScheduler 资源中心完全指南文件管理与任务组实战 Apache DolphinScheduler 的资源中心Resour任务调度数据编排工作流自动化后端大数据Apache DolphinScheduler 资源中心完整指南本地/HDFS/S3/OSS 存储配置、文件管理与任务组并发控制Apache DolphinScheduler 资源中心完整指南本地/HDFS/S3/OSS 存储配置、文件管理与任务组并发控制 导读 资源中心Resour任务调度数据编排工作流自动化后端大数据创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表