DolphinScheduler资源中心
[toc]
# 文件管理
当在调度过程中需要使用到第三方的 jar 或者用户需要自定义脚本的情况,可以通过在该页面完成相关操作。可创建的文件类型包括:txt/log/sh/conf/py/java
等。并且可以对文件进行编辑、重命名、下载和删除等操作。
注意:
- 当您以
admin
身份等入并操作文件时,需要先给admin
设置租户
# 基础操作
# 创建文件
文件格式支持以下几种类型:txt、log、sh、conf、cfg、py、java、sql、xml、hql、properties
# 上传文件
上传文件:点击"上传文件"按钮进行上传,将文件拖拽到上传区域,文件名会自动以上传的文件名称补全
# 文件查看
对可查看的文件类型,点击文件名称,可查看文件详情
# 下载文件
点击文件列表的"下载"按钮下载文件或者在文件详情中点击右上角"下载"按钮下载文件
# 文件重命名
# 删除文件
文件列表->点击"删除"按钮,删除指定文件
# 任务样例
该样例主要通过一个简单的 shell 脚本,来演示如何在工作流定义中使用资源中心的文件。像 MR、Spark 等任务需要用到 jar 包,也是同理。
# 创建 shell 文件
创建一个 shell 文件,输出 “hello world”。
# 创建工作流执行文件
在项目管理的工作流定义模块,创建一个新的工作流,使用 shell 任务。
- 脚本:
sh hello.sh
- 资源:选择
hello.sh
注意:
1.脚本中选择资源文件时文件名称需要保持和所选择资源全路径一致: 例如:资源路径为
resource/hello.sh
则脚本中调用需要使用resource/hello.sh
全路径2.在这个sh脚本中引用
echo 测试输出Shell文件内容:$[yyyyMMddHHmmss]
,时间是无法输出的
# 查看结果
可以在工作流实例中,查看该节点运行的日志结果。如下图:
# UDF管理
资源管理和文件管理功能类似,不同之处是资源管理是上传的 UDF 函数,文件管理上传的是用户程序,脚本及配置文件。
主要包括以下操作:重命名、下载、删除等。
上传 UDF 资源和上传文件相同。
# 函数管理
创建 UDF 函数
点击“创建 UDF 函数”,输入 UDF 函数参数,选择udf资源,点击“提交”,创建 UDF 函数。 目前只支持 HIVE 的临时 UDF 函数
UDF 函数名称:输入 UDF 函数时的名称
包名类名:输入 UDF 函数的全路径
UDF 资源:设置创建的 UDF 对应的资源文件
注意:
创建UDF函数之前,需要再
UDF管理->资源管理
中上传UDF函数Jar包
# 任务样例
# 编写 UDF 函数
用户可以根据实际生产需求,自定义想要的 UDF 函数。这里编写一个在任意字符串的末尾添加 "HelloWorld" 的函数。如下图所示:
# 配置 UDF 函数
配置 UDF 函数前,需要先通过资源管理上传所需的函数 jar 包。然后进入函数管理,配置相关信息即可。如下图所示:
# 使用 UDF 函数
在使用 UDF 函数过程中,用户只需关注具体的函数编写,通过资源中心上传配置完成即可。系统会自动配置 create function 语句,参考如下:SqlTask (opens new window)
进入工作流定义一个 SQL 节点,数据源类型选择为 HIVE,数据源实例类型为 HIVE/IMPALA。
- SQL 语句:
select HwUdf("abc");
该函数与内置函数使用方式一样,直接使用函数名称即可访问。 - UDF 函数:选择资源中心所配置的即可。
# 任务组管理
任务组主要用于控制任务实例并发,旨在控制其他资源的压力(也可以控制 Hadoop 集群压力,不过集群会有队列管控)。您可在新建任务定义时,可配置对应的任务组,并配置任务在任务组内运行的优先级。
# 任务组配置
# 新建任务组
用户点击【资源中心】-【任务组管理】-【任务组配置】-新建任务组
您需要输入图片中信息,其中
【任务组名称】:任务组在被使用时显示的名称
【项目名称】:任务组作用的项目,该项为非必选项,如果不选择,则整个系统所有项目均可使用该任务组。
【资源容量】:允许任务实例并发的最大数量
# 查看任务组队列
# 任务组的使用
注:任务组的使用适用于由 worker 执行的任务,例如【switch】节点、【condition】节点、【sub_process】等由 master 负责执行的节点类型不受任务组控制。
我们以 shell 节点为例:
关于任务组的配置,您需要做的只需要配置红色框内的部分,其中:
【任务组名称】:任务组配置页面显示的任务组名称,这里只能看到该项目有权限的任务组(新建任务组时选择了该项目),或作用在全局的任务组(新建任务组时没有选择项目)
【组内优先级】:在出现等待资源时,优先级高的任务会最先被 master 分发给 worker 执行,该部分数值越大,优先级越高。
# 任务组的实现逻辑
# 获取任务组资源:
Master 在分发任务时判断该任务是否配置了任务组,如果任务没有配置,则正常抛给 worker 运行;如果配置了任务组,在抛给 worker 执行之前检查任务组资源池剩余大小是否满足当前任务运行,如果满足资源池 -1,继续运行;如果不满足则退出任务分发,等待其他任务结束唤醒。
# 释放与唤醒:
当获取到任务组资源的任务结束运行后,会释放任务组资源,释放后会检查当前任务组是否有任务等待,如果有则标记优先级最好的任务可以运行,并新建一个可以执行的event。该event中存储着被标记可以获取资源的任务id,随后在获取任务组资源然后运行。