大数据

dolphinscheduler使用与测试文档

2020-03-31  本文已影响0人  Rudolf_liu

安全中心(Security)

队列管理(Queue manage)

队列是在执行 spark、mapreduce 等程序,需要用到“队列”参数时使用的(创建后不可删除)。

例:

安全中心 -> 队列管理 -> 创建队列
------------------------------------------------------
名称:quene_test
队列值:quene_test
------------------------------------------------------
提交

租户管理(Tenant Manage)

租户对应的是 Linux 的用户,用于 worker 提交作业所使用的用户。
如果 Linux 没有这个用户,worker 会在执行脚本的时候创建这个用户。
租户编码:租户编码是 Linux 上的用户,唯一,不能重复。
新建的租户会在 HDFS 上 $hdfsPath("/dolphinscheduler") 目录下创建租户目录,租户目录下为该租户上传的文件和 UDF 函数
租户名称:租户编码的别名

例:

安全中心 -> 租户管理 -> 创建租户
------------------------------------------------------
租户编码:test
租户名称:test
队列值:default
------------------------------------------------------
提交

使用到HDFS需要为该用户在 HDFS 上创建用户目录
sudo -u hdfs hadoop fs -mkdir /user/developer
sudo -u hdfs hadoop fs -chown developer:developer /user/developer

用户管理(User Manage)

用户分为管理员用户和普通用户。
授予权限包括:项目权限,资源权限,数据源权限,UDF函数权限。
管理员可以对普通用户进行非其创建的项目、资源、数据源和UDF函数进行授权。

例:

安全中心 -> 用户管理 -> 创建用户
------------------------------------------------------
用户名称:test
密码:test123
租户:test
队列:default
邮箱:****
手机号:
-----------------------------------------------------+-
提交

实际生产环境中,可将 项目、用户、租户 相关联,即为某个大的项目创建一个用户及对应的租户。若需要删除用户,则应首先将项目内的任务删除,然后删除项目,再删除用户及关联的租户,否则会出现任务无法运行,项目不可见等情况(1.2 版本)
如果该 用户切换租户,则该 用户在当前租户下创建的所有资源 将 复制 到新的租户下(对于 HDFS 平台来说,则是将当前租户目录下该用户创建的所有资源复制到新租户的目录下,不复制被赋权的文件,且被赋权的文件仍有权限)。需要注意的是,此后进行文件删除操作时,旧租户下的对应的文件并不会被删除。

告警组管理(Warning group manage)

告警组是在启动时设置的参数,在流程结束以后会将流程的状态和其他信息以邮件形式发送给告警组。

Worker分组管理(Worker group manage)

worker 分组,提供了一种让任务在指定的 worker 上运行的机制。
管理员创建 worker 分组,在任务节点和运行参数中设置中可以指定该任务运行的 worker 分组。
如果指定的分组被删除或者没有指定分组,则该任务会在任意一个 worker 上运行。worker 分组内多个 ip 地址(不能写别名),以英文逗号分隔。

例:

安全中心 -> Worker分组管理 -> 创建Worker分组
------------------------------------------------------
组名称:worker_group1
IP:*****
------------------------------------------------------
提交

令牌管理(Token manage)

由于后端接口有登录检查,令牌管理,提供了一种可以通过调用接口的方式对系统进行各种操作。

监控中心(Monitor)

数据源中心(Datasource)

数据源中心 -> 创建数据源 -> MYSQL
------------------------------------------------------
数据源名称:mysql_source
描述:
IP主机名:*****
端口:3306
用户名:root
密码:*****
数据库名:test
jdbc连接参数:{"useSSL":"false","useUnicode":"true","characterEncoding":"UTF-8","allowMultiQueries":"true"}
------------------------------------------------------
测试链接 -> 编辑

其他数据源:略,后续用到再补充

资源中心(Resources)

资源中心所有文件对应的 Mysql 表为:t_ds_resources
UDF 对应的 Mysql 表为:t_ds_udfs
资源中心的文件上传、删除操作使用的用户均为 install.sh 中指定的 $hdfsRootUser

由于没有使用HDFS,略,后续用到再补充

项目管理(Project)

创建项目

项目名称 不可重复。即使为不同用户,创建项目时若 项目名称 已存在。会提示 “project Test already exists”。
若要删除项目,需要确认项目中所有 工作流定义 都已下线并删除,才能进行删除操作。
实际生产环境中,建议使用 管理员账户 创建项目,并对开发人员赋权。

例:

项目管理 -> 创建项目
------------------------------------------------------
项目名称:测试项目
描述:
------------------------------------------------------
提交

项目首页

项目名称 -> 项目首页
------------------------------------------------------
任务状态统计:是指在指定时间范围内,统计 任务实例 中的待运行、失败、运行中、完成、成功的个数
流程状态统计:是指在指定时间范围内,统计 工作流实例 中的待运行、失败、运行中、完成、成功的个数
流程定义统计:是统计当前用户有权限的项目的 工作流定义 总数

工作流定义的工作流每运行一次,产生一个工作流实例,一个工作流实例包含一到多个任务实例。同一任务实例仅被统计一次,按最近时间状态进行统计。

工作流定义

创建工作流定义

项目管理 -> 工作流 -> 工作流定义 -> 创建工作流
Step 1:拖拽“SHELL"节点到画布,新增一个Shell任务。
------------------------------------------------------
节点名称:task01
描述:This is a test task.
任务优先级:MEDIUM
Worker分组:Default
失败重试次数:0
失败重试间隔:1
脚本:
    #!/bin/sh
    echo "HELLO WORLD."
资源:
自定义参数:
------------------------------------------------------
    确认添加

Step 2:拖拽“SHELL"节点到画布,新增一个Shell任务。
------------------------------------------------------
节点名称:task02
描述:This is another test task.
任务优先级:MEDIUM
Worker分组:Default
失败重试次数:0
失败重试间隔:1
脚本:
    #!/bin/sh
    echo "HELLO DOLPHIN SCHEDULER."
资源:
自定义参数:
-> 确认添加
------------------------------------------------------
Step 3:“选择线条连接”,连接任务1、2,tesk01、task02 会串行执行。
Step 4:保存
------------------------------------------------------
设置DAG图名称:Test_shell
选择租户:test
------------------------------------------------------
-> 添加

更多任务类型详见:

工作流定义操作功能

工作流定义列表的操作功能如下:

运行工作流

工作流运行参数说明:

例:

项目管理 -> 工作流 -> 工作流定义 -> 选择工作流名称“Test_shell” -> 上线 -> 运行(参数均为默认,不做修改)

工作流定时

选择指定工作流,点击“定时”,选择起止时间、定时等选择定时执行时间。

点击"创建"按钮,创建定时成功,此时定时状态为"下线",定时需上线才生效。
定时上线:点击"定时管理"按钮,进入定时管理页面,点击"上线"按钮,定时状态变为"上线",如下图所示,工作流定时生效。

下线 工作流定义 后,定时任务业务也会同时下线,工作流定义 上线后,需要重新手动上线定时任务

导入工作流

点击项目管理->工作流->工作流定义,进入工作流定义页面,点击"导入工作流"按钮,导入本地工作流文件,工作流定义列表显示导入的工作流,状态为下线。

工作流实例

工作流实例操作功能:

查看工作流实例:
项目管理 -> 工作流 -> 工作流实例 -> 点击工作流名称 -> 进入DAG查看页面,查看任务执行状态

查看任务日志:
进入DAG查看页面 -> 双击任务节点 -> 查看日志

查看任务历史记录:
进入DAG查看页面 -> 双击任务节点 -> 查看历史

查看运行参数:
进入工作流DAG页面 -> 点击左上角图标,查看工作流实例的启动参数、全局参数和局部参数

任务实例

任务实例 -> 点击工作流实例名称 -> 可跳转到工作流实例DAG图查看任务状态
任务实例 -> 查看日志

任务节点类型和参数设置

Shell节点

运行说明:shell 节点,在 worker 执行的时候,会生成一个临时 shell 脚本,使用租户同名的linux 用户执行这个脚本。
参数说明:

例:

项目管理 -> 工作流 -> 工作流定义 -> 创建工作流
------------------------------------------------------

拖拽“SHELL"节点到画布,新增一个Shell任务。
节点名称:Test_shell_01
运行标志:正常
描述:
任务优先级:MEDIUM
Worker分组:Default
失败重试次数:0
失败重试间隔:1
超时告警:off
脚本:
    #!/bin/sh
    for i in {1..10};do echo $i;done
资源:
自定义参数:
-> 确认添加

------------------------------------------------------

保存 ->
设置DAG图名称:Test_shell
选择租户:Default
超时告警:off
设置全局:

------------------------------------------------------

添加 -> 上线 -> 运行

子流程节点

运行说明:子流程节点,就是把外部的某个工作流定义当做一个任务节点去执行。
参数说明:

例:

项目管理 -> 工作流 -> 工作流定义 -> 创建工作流
------------------------------------------------------

Task 1:拖拽 SHELL 节点到画布,新增一个 Shell 任务
节点名称:Test_subprocess_01
... ...
脚本:
    #!/bin/sh
    for i in {1..10};do echo $i;done
-> 确认添加
Task 2:拖拽 SUB_PROCESS 节点到画布,新增一个 SUB_PROCESS 任务
节点名称:Test_subprocess_02
... ...
子节点:Test_shell
-> 确认添加

------------------------------------------------------

串联任务节点 Task1 和 Task2
------------------------------------------------------

保存 ->
设置DAG图名称:Test_subprocess
选择租户:Default
超时告警:off
设置全局:

------------------------------------------------------

添加 -> 上线 -> 运行

存储过程节点

运行说明:根据选择的数据源,执行存储过程。
参数说明:

SQL节点

参数说明:

例,以mysql为例:

项目管理 -> 工作流 -> 工作流定义 -> 创建工作流
------------------------------------------------------

Task 1:拖拽 SQL 节点到画布,新增一个 SQL 任务
节点名称:Test_sql_mysql_01
... ...
数据源:MYSQL   mysql_source
sql类型:查询   表格:√ 附件:√
主题:Test MySQL
收件人:******
sql语句:
    select * from test_table where score=${i};
自定义参数:
    i -> IN -> INTEGER -> 123
前置sql:
    INSERT INTO test_table values(1, 'test',123)
后置sql:
-> 确认添加
Task 2:拖拽 SQL 节点到画布,新增一个 SQL 任务
节点名称:Test_sql_mysql_02
... ...
数据源:MYSQL   mysql_source
sql类型:非查询
sql语句:
    create table test_table2 as select * from test_table;
自定义参数:
前置sql:
后置sql:
-> 确认添加

------------------------------------------------------

串联任务节点 Test_sql_mysql_01、Test_sql_mysql_02
------------------------------------------------------

保存 ->
设置DAG图名称:Test_sql_mysql
选择租户:Default
超时告警:off
设置全局:

------------------------------------------------------

添加 -> 上线 -> 运行

依赖(DEPENDENT)节点

运行说明:依赖节点,就是依赖检查节点。比如A流程依赖昨天的B流程执行成功,依赖节点会去检查B流程在昨天是否有执行成功的实例。

其他节点,略,后续使用到了其他节点会补充

参数

系统参数

变量 含义
${system.biz.date} 日常调度实例定时的定时时间前一天,格式为 yyyyMMdd,补数据时,该日期 +1
${system.biz.curdate} 日常调度实例定时的定时时间,格式为 yyyyMMdd,补数据时,该日期 +1
${system.datetime} 日常调度实例定时的定时时间,格式为 yyyyMMddHHmmss,补数据时,该日期 +1

自定义参数

* 后 N 年:$[add_months(yyyyMMdd,12*N)]
* 前 N 年:$[add_months(yyyyMMdd,-12*N)]
* 后 N 月:$[add_months(yyyyMMdd,N)]
* 前 N 月:$[add_months(yyyyMMdd,-N)]
* 后 N 周:$[yyyyMMdd+7*N]
* 前 N 周:$[yyyyMMdd-7*N]
* 后 N 天:$[yyyyMMdd+N]
* 前 N 天:$[yyyyMMdd-N]
* 后 N 小时:$[HHmmss+N/24]
* 前 N 小时:$[HHmmss-N/24]
* 后 N 分钟:$[HHmmss+N/24/60]
* 前 N 分钟:$[HHmmss-N/24/60]

官方使用文档

https://dolphinscheduler.apache.org/zh-cn/docs/1.2.0/user_doc/quick-start.html

出现的问题

创建租户

创建用户

调度未执行

定时任务上线成功,调度未执行,查看master没有打印错误日志

<root level="INFO">
    <appender-ref ref="MASTERLOGFILE"/>
    <!-- 增加日志到控制台-->
    <appender-ref ref="STDOUT"/>
</root>
上一篇下一篇

猜你喜欢

热点阅读