本文章经授权转载

Table of Contents

任务总体存储

Shell节点

SQL节点

存储过程节点

SPARK节点

MapReduce(MR)节点

Python节点

Flink节点

HTTP节点

子流程节点

依赖(DEPENDENT)节点


任务总体存储

在调度平台所创建的所有任务都保存在 t_ds_process_definition 表中。

该数据库表结构如下表所示:

序号 字段 类型 注释
1 id int 主键
2 name varchar 流程定义名称
3 version int 流程定义版本
4 release_state tinyint 流程定义的发布状态:0 未上线  1已上线
5 project_id int 项目id
6 user_id int 流程定义所属用户id
7 process_definition_json longtext 流程定义json串
8 description text 流程定义描述
9 global_params text 全局参数
10 flag tinyint 流程是否可用:0 不可用,1 可用
11 locations text 节点坐标信息
12 connects text 节点连线信息
13 receivers text 收件人
14 receivers_cc text 抄送人
15 create_time datetime 创建时间
16 timeout int 超时时间
17 tenant_id int 租户id
18 update_time datetime 更新时间

其中 process_definition_json 字段为核心字段, 定义了 DAG 图中的任务信息.该数据以 JSON 的方式进行存储。

公共的数据结构如下表:

序号 字段 类型 注释
1 globalParams Array 全局参数
2 tasks Array

流程中的任务集合[各个类型的结构请参考如下章节]

3 tenantId int 租户id
4 timeout int 超时时间

数据示例:

  1. {
  2. "globalParams": [
  3. {
  4. "prop": "golbal_bizdate",
  5. "direct": "IN",
  6. "type": "VARCHAR",
  7. "value": "${system.biz.date}"
  8. }
  9. ],
  10. "tasks": [{}],
  11. "tenantId": -1,
  12. "timeout": 0
  13. }

Shell节点

Shell节点,在worker执行的时候,会生成一个临时Shell脚本,使用租户同名的linux用户执行这个脚本。

节点定义结构如下:

序号 参数名
描述 备注
1 type
类型 值: SHELL
2 id
任务编码
3 name
名称
4 params
自定义参数 Json 格式
5
resourceList 引用资源文件
6
localParams 本地变量
7
rawScript Shell脚本
8 description
描述
9 runFlag
运行标识
10 dependence
任务依赖 与params互斥
11 maxRetryTimes
最大重试次数
12 retryInterval
重试间隔
13 timeout
超时控制
14 taskInstancePriority
任务优先级
15 workerGroupId
Worker 分组
16 preTasks
前置任务

数据示例:

  1. {
  2. "type": "SHELL",
  3. "id": "tasks-17761",
  4. "name": "shell-task",
  5. "params": {
  6. "resourceList": [
  7. {
  8. "res": "spark-examples_2.11-2.4.4.jar"
  9. },
  10. {
  11. "res": "hadoop-mapreduce-examples-2.7.4.jar"
  12. }
  13. ],
  14. "localParams": [
  15. {
  16. "prop": "local_param",
  17. "direct": "IN",
  18. "type": "VARCHAR",
  19. "value": "global_bizdate"
  20. }
  21. ],
  22. "rawScript": "echo \"thisisashelltask: ${local_param}\""
  23. },
  24. "description": "",
  25. "runFlag": "NORMAL",
  26. "dependence": {},
  27. "maxRetryTimes": "0",
  28. "retryInterval": "1",
  29. "timeout": {
  30. "strategy": "",
  31. "interval": null,
  32. "enable": false
  33. },
  34. "taskInstancePriority": "MEDIUM",
  35. "workerGroupId": -1,
  36. "preTasks": []
  37. }

SQL节点

通过 SQL 对指定的数据源进行数据查询、更新操作。

节点定义结构如下。

序号 参数名
描述 备注
1 type
类型 值: SQL
2 id
任务编码
3 name
名称
4 params
自定义参数 Json 格式
5
type 数据库类型
6
datasource 数据源
7
sql Sql脚本
8
udfs Udf 函数
9
sqlType SQL 类型 0 查询  1 非查询
10
title 邮件标题
11
receivers 邮件接收人
12
receiversCc 邮件抄送人
13
showType 接收类型 TABLE 表格ATTACHMENT附件
14
localParams 本地变量
15
connParams 连接参数
16
preStatements 前置 SQL
17
postStatements 后置 SQL
18 description
描述
19 runFlag
运行标识
20 dependence
任务依赖 与params互斥
21 maxRetryTimes
最大重试次数
22 retryInterval
重试间隔
23 timeout
超时控制
24 taskInstancePriority
任务优先级
25 workerGroupId
Worker 分组
26 preTasks
前置任务

数据示例:

  1. {
  2. "type": "SQL",
  3. "id": "tasks-17811",
  4. "name": "SQL节点",
  5. "params": {
  6. "type": "MYSQL",
  7. "datasource": 2,
  8. "sql": "show databases;",
  9. "udfs": "",
  10. "sqlType": "0",
  11. "title": "SQL节点",
  12. "receivers": "zhangboyi_mx@163.com",
  13. "receiversCc": "",
  14. "showType": "TABLE,ATTACHMENT",
  15. "localParams": [],
  16. "connParams": "",
  17. "preStatements": [
  18. "select user();"
  19. ],
  20. "postStatements": [
  21. "select database();"
  22. ]
  23. },
  24. "description": "",
  25. "runFlag": "NORMAL",
  26. "dependence": {},
  27. "maxRetryTimes": "0",
  28. "retryInterval": "1",
  29. "timeout": {
  30. "strategy": "",
  31. "interval": null,
  32. "enable": false
  33. },
  34. "taskInstancePriority": "MEDIUM",
  35. "workerGroupId": -1,
  36. "preTasks": []
  37. }

存储过程节点

根据选择的数据源,执行存储过程。

节点定义结构如下:

序号 参数名
描述 备注
1 type
类型 值: PROCEDURE
2 id
任务编码
3 name
名称
4 params
自定义参数 Json 格式
5
type 数据库类型
6
datasource 数据源 ID
7
method 方法名
8
localParams 存储过程参数
9 description
描述
10 runFlag
运行标识
11 dependence
任务依赖 与params互斥
12 maxRetryTimes
最大重试次数
13 retryInterval
重试间隔
14 timeout
超时控制
15 taskInstancePriority
任务优先级
16 workerGroupId
Worker 分组
17 preTasks
前置任务

数据示例:

  1. {
  2. "type": "PROCEDURE",
  3. "id": "tasks-33589",
  4. "name": "存储过程节点",
  5. "params": {
  6. "type": "MYSQL",
  7. "datasource": 2,
  8. "method": "add",
  9. "localParams": [
  10. {
  11. "prop": "in_paramer",
  12. "direct": "IN",
  13. "type": "VARCHAR",
  14. "value": ""
  15. },
  16. {
  17. "prop": "out_paramer",
  18. "direct": "OUT",
  19. "type": "VARCHAR",
  20. "value": ""
  21. }
  22. ]
  23. },
  24. "description": "",
  25. "runFlag": "NORMAL",
  26. "dependence": {},
  27. "maxRetryTimes": "0",
  28. "retryInterval": "1",
  29. "timeout": {
  30. "strategy": "",
  31. "interval": null,
  32. "enable": false
  33. },
  34. "taskInstancePriority": "MEDIUM",
  35. "workerGroupId": -1,
  36. "preTasks": []
  37. }

SPARK节点

通过SPARK节点,可以直接直接执行SPARK程序,对于spark节点,worker会使用spark-submit方式提交任务。

节点定义结构如下:

序号 参数名
描述 备注
1 type
类型 值: SPARK
2 id
任务编码
3 name
名称
4 params
自定义参数 Json 格式
5
mainClass 运行主类
6
mainJar 程序 jar 包
7
deployMode 部署模式
8
resourceList 引用资源文件
9
localParams 本地变量
10
driverCores driver核数
11
driverMemory driver 内存数
12
numExecutors executor数量
13
executorMemory executor内存
14
executorCores executor核数
15
mainArgs 主参数
16
others 其他参数
17
programType 程序类型
18
sparkVersion Spark 版本
19 description
描述
20 runFlag
运行标识
21 dependence
任务依赖 与params互斥
22 maxRetryTimes
最大重试次数
23 retryInterval
重试间隔
24 timeout
超时控制
25 taskInstancePriority
任务优先级
26 workerGroupId
Worker 分组
27 preTasks
前置任务

数据示例:

  1. {
  2. "type": "SPARK",
  3. "id": "tasks-46459",
  4. "name": "SPARK节点",
  5. "params": {
  6. "mainClass": "org.apache.spark.examples.SparkPi",
  7. "mainJar": {
  8. "res": "spark-examples_2.11-2.4.4.jar"
  9. },
  10. "deployMode": "cluster",
  11. "resourceList": [
  12. {
  13. "res": "spark-examples_2.11-2.4.4.jar"
  14. }
  15. ],
  16. "localParams": [],
  17. "driverCores": 1,
  18. "driverMemory": "512M",
  19. "numExecutors": 2,
  20. "executorMemory": "2G",
  21. "executorCores": 2,
  22. "mainArgs": "10",
  23. "others": "",
  24. "programType": "SCALA",
  25. "sparkVersion": "SPARK2"
  26. },
  27. "description": "",
  28. "runFlag": "NORMAL",
  29. "dependence": {},
  30. "maxRetryTimes": "0",
  31. "retryInterval": "1",
  32. "timeout": {
  33. "strategy": "",
  34. "interval": null,
  35. "enable": false
  36. },
  37. "taskInstancePriority": "MEDIUM",
  38. "workerGroupId": -1,
  39. "preTasks": []
  40. }

MapReduce(MR)节点

使用MR节点,可以直接执行MR程序。对于mr节点,worker会使用hadoop jar方式提交任务。

节点定义结构如下:

序号 参数名
描述 备注
1 type
类型 值: MR
2 id
任务编码
3 name
名称
4 params
自定义参数 Json 格式
5
mainClass 运行主类
6
mainJar 程序 jar 包
7
resourceList 引用资源文件
8
mainArgs 主参数
9
others 其他参数
10
programType 程序类型
11 description
描述
12 runFlag
运行标识
13 dependence
任务依赖 与params互斥
14 maxRetryTimes
最大重试次数
15 retryInterval
重试间隔
16 timeout
超时控制
17 taskInstancePriority
任务优先级
18 workerGroupId
Worker 分组
19 preTasks
前置任务

数据示例:

  1. {
  2. "type": "MR",
  3. "id": "tasks-70322",
  4. "name": "MapReduce(MR)节点",
  5. "params": {
  6. "mainClass": "wordcount",
  7. "mainJar": {
  8. "res": "hadoop-mapreduce-examples-2.7.4.jar"
  9. },
  10. "resourceList": [
  11. {
  12. "res": "hadoop-mapreduce-examples-2.7.4.jar"
  13. }
  14. ],
  15. "localParams": [],
  16. "mainArgs": "/wordcount/input /wordcount/output/result",
  17. "others": "",
  18. "programType": "JAVA"
  19. },
  20. "description": "",
  21. "runFlag": "NORMAL",
  22. "dependence": {},
  23. "maxRetryTimes": "0",
  24. "retryInterval": "1",
  25. "timeout": {
  26. "strategy": "",
  27. "interval": null,
  28. "enable": false
  29. },
  30. "taskInstancePriority": "MEDIUM",
  31. "workerGroupId": -1,
  32. "preTasks": []
  33. }

Python节点

使用Python节点,可以直接执行python脚本,对于python节点,worker会使用python **方式提交任务。

节点定义结构如下:

序号 参数名
描述 备注
1 type
类型 值: PYTHON
2 id
任务编码
3 name
名称
4 params
自定义参数 Json 格式
5
resourceList 引用资源文件
6
localParams 本地变量
7
rawScript Python脚本
8 description
描述
9 runFlag
运行标识
10 dependence
任务依赖 与params互斥
11 maxRetryTimes
最大重试次数
12 retryInterval
重试间隔
13 timeout
超时控制
14 taskInstancePriority
任务优先级
15 workerGroupId
Worker 分组
16 preTasks
前置任务

数据示例:

  1. {
  2. "type": "PYTHON",
  3. "id": "tasks-23887",
  4. "name": " Python节点",
  5. "params": {
  6. "resourceList": [
  7. {
  8. "res": "hadoop-mapreduce-examples-2.7.4.jar"
  9. },
  10. {
  11. "res": "spark-examples_2.11-2.4.4.jar"
  12. }
  13. ],
  14. "localParams": [],
  15. "rawScript": "print(\"this is python task ..\")"
  16. },
  17. "description": "",
  18. "runFlag": "NORMAL",
  19. "dependence": {},
  20. "maxRetryTimes": "0",
  21. "retryInterval": "1",
  22. "timeout": {
  23. "strategy": "",
  24. "interval": null,
  25. "enable": false
  26. },
  27. "taskInstancePriority": "MEDIUM",
  28. "workerGroupId": -1,
  29. "preTasks": []
  30. }

Flink节点

根据配置调用 Flink 请求。

节点定义结构如下:

序号 参数名
描述 备注
1 type
类型 值: FLINK
2 id
任务编码
3 name
名称
4 params
自定义参数 Json 格式
5
mainClass 运行主类
6
mainJar 程序 jar 包
7
deployMode 部署模式
8
resourceList 引用资源文件
9
localParams 本地变量
10
slot Slot数量
11
taskManager taskManager数量
12
taskManagerMemory taskManager内存
13
jobManagerMemory jobManager内存
14
executorCores executor核数
15
mainArgs 主参数
16
others 其他参数
17
programType 程序类型
18
sparkVersion Spark 版本
19 description
描述
20 runFlag
运行标识
21 dependence
任务依赖 与params互斥
22 maxRetryTimes
最大重试次数
23 retryInterval
重试间隔
24 timeout
超时控制
25 taskInstancePriority
任务优先级
26 workerGroupId
Worker 分组
27 preTasks
前置任务

数据示例:

  1. {
  2. "type": "FLINK",
  3. "id": "tasks-84250",
  4. "name": "Flink节点",
  5. "params": {
  6. "mainClass": "org.apache.spark.examples.SparkPi",
  7. "mainJar": {
  8. "res": "spark-examples_2.11-2.4.4.jar"
  9. },
  10. "deployMode": "cluster",
  11. "resourceList": [],
  12. "localParams": [],
  13. "slot": 1,
  14. "taskManager": "2",
  15. "jobManagerMemory": "1G",
  16. "taskManagerMemory": "2G",
  17. "executorCores": 2,
  18. "mainArgs": "10",
  19. "others": "",
  20. "programType": "SCALA"
  21. },
  22. "description": "",
  23. "runFlag": "NORMAL",
  24. "dependence": {},
  25. "maxRetryTimes": "0",
  26. "retryInterval": "1",
  27. "timeout": {
  28. "strategy": "",
  29. "interval": null,
  30. "enable": false
  31. },
  32. "taskInstancePriority": "MEDIUM",
  33. "workerGroupId": -1,
  34. "preTasks": []
  35. }

HTTP节点

根据配置调用 HTTP 请求。

节点定义结构如下:

序号 参数名
描述 备注
1 type
类型 值: HTTP
2 id
任务编码
3 name
名称
4 params
自定义参数 Json 格式
5
localParams 本地变量
6
httpParams 请求参数
7
url url 地址
8
httpMethod 请求方式
9
httpCheckCondition 检查条件
10
condition 检查内容
11 description
描述
12 runFlag
运行标识
13 dependence
任务依赖 与params互斥
14 maxRetryTimes
最大重试次数
15 retryInterval
重试间隔
16 timeout
超时控制
17 taskInstancePriority
任务优先级
18 workerGroupId
Worker 分组
19 preTasks
前置任务

数据示例:

  1. {
  2. "type": "HTTP",
  3. "id": "tasks-31113",
  4. "name": "http节点",
  5. "params": {
  6. "localParams": [],
  7. "httpParams": [
  8. {
  9. "prop": "id",
  10. "httpParametersType": "PARAMETER",
  11. "value": "GRESFWW"
  12. }
  13. ],
  14. "url": "http://www.ysstech.com/",
  15. "httpMethod": "GET",
  16. "httpCheckCondition": "STATUS_CODE_DEFAULT",
  17. "condition": ""
  18. },
  19. "description": "",
  20. "runFlag": "NORMAL",
  21. "dependence": {},
  22. "maxRetryTimes": "0",
  23. "retryInterval": "1",
  24. "timeout": {
  25. "strategy": "",
  26. "interval": null,
  27. "enable": false
  28. },
  29. "taskInstancePriority": "MEDIUM",
  30. "workerGroupId": -1,
  31. "preTasks": []
  32. }

子流程节点

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

节点定义结构如下:

序号 参数名
描述 备注
1 type
类型 值: SUB_PROCESS
2 id
任务编码
3 name
名称
4 params
自定义参数 Json 格式
5
processDefinitionId 流程定义 ID
6 description
描述
7 runFlag
运行标识
8 dependence
任务依赖 与params互斥
9 maxRetryTimes
最大重试次数
10 retryInterval
重试间隔
11 timeout
超时控制
12 taskInstancePriority
任务优先级
13 workerGroupId
Worker 分组
14 preTasks
前置任务
15



16



数据示例:

  1. {
  2. "type": "SUB_PROCESS",
  3. "id": "tasks-22568",
  4. "name": "子流程节点-task",
  5. "params": {
  6. "processDefinitionId": 2
  7. },
  8. "description": "",
  9. "runFlag": "NORMAL",
  10. "dependence": {},
  11. "timeout": {
  12. "strategy": "",
  13. "interval": null,
  14. "enable": false
  15. },
  16. "taskInstancePriority": "MEDIUM",
  17. "workerGroupId": -1,
  18. "preTasks": []
  19. }

依赖(DEPENDENT)节点

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

节点定义结构如下:

序号 参数名
描述 备注
1 type
类型 值: DEPENDENT
2 id
任务编码
3 name
名称
4 params
自定义参数
5 description
描述
6 runFlag
运行标识
7 dependence
任务依赖 与params互斥
8
relation 关系
9
dependTaskList 依赖任务清单
10 maxRetryTimes
最大重试次数
11 retryInterval
重试间隔
12 timeout
超时控制
13 taskInstancePriority
任务优先级
14 workerGroupId
Worker 分组
15 preTasks
前置任务

数据示例:

  1. {
  2. "type": "DEPENDENT",
  3. "id": "tasks-3383",
  4. "name": " 依赖(DEPENDENT)节点",
  5. "params": {},
  6. "description": "",
  7. "runFlag": "NORMAL",
  8. "dependence": {
  9. "relation": "AND",
  10. "dependTaskList": [
  11. {
  12. "relation": "AND",
  13. "dependItemList": [
  14. {
  15. "projectId": 2,
  16. "definitionId": 3,
  17. "definitionList": [
  18. {
  19. "value": 3,
  20. "label": "子流程节点"
  21. },
  22. {
  23. "value": 2,
  24. "label": "shell-task"
  25. }
  26. ],
  27. "depTasks": "ALL",
  28. "cycle": "day",
  29. "dateValue": "today"
  30. }
  31. ]
  32. }
  33. ]
  34. },
  35. "maxRetryTimes": "0",
  36. "retryInterval": "1",
  37. "timeout": {
  38. "strategy": "",
  39. "interval": null,
  40. "enable": false
  41. },
  42. "taskInstancePriority": "MEDIUM",
  43. "workerGroupId": -1,
  44. "preTasks": []
  45. }

Apache DolphinScheduler 1.2.0 task 任务存储结构说明的更多相关文章

  1. Apache DolphinScheduler 1.2.0 使用文档(1/8):架构及名词解释

    本文章经授权转载,原文链接: https://blog.csdn.net/MiaoSO/article/details/104770720 目录 1. 架构及名词解释 1.1 DolphinSched ...

  2. apache kafka系列之在zookeeper中存储结构

    1.topic注册信息 /brokers/topics/[topic] : 存储某个topic的partitions所有分配信息 Schema:   {    "version": ...

  3. 论语音社交视频直播平台与 Apache DolphinScheduler 的适配度有多高

    在 Apache DolphinScheduler& Apache ShenYu(Incubating) Meetup 上,YY 直播 软件工程师 袁丙泽 为我们分享了<YY直播基于Ap ...

  4. 金灿灿的季节 - Apache DolphinScheduler收获5位新Committer

    在这个金灿灿的收获季节,经过 Apache DolphinScheduler PPMC 们的推荐和投票,Apache DolphinScheduler 收获了 5 位新Committer .他们是:n ...

  5. Apache DolphinScheduler 迎来 2 位 PPMC

    经过 Apache DolphinScheduler PPMC 们的推荐和投票,我们高兴的宣布:Apache DolphinScheduler 迎来了 2 位 PPMC .他们是(github id) ...

  6. 感谢有你!Apache DolphinScheduler 项目 GitHub star 突破 8k

    本周伊始,Apache DolphinScheduler 项目在 GitHub 上的 Github Star 总数首次突破 8K.目前,Apache DolphinScheduler 社区已经拥有 C ...

  7. kafka笔记-Kafka在zookeeper中的存储结构【转】

    参考链接:apache kafka系列之在zookeeper中存储结构  http://blog.csdn.net/lizhitao/article/details/23744675 1.topic注 ...

  8. Apache DolphinScheduler 3.0.0 正式版发布!

    ​  点亮 ️ Star · 照亮开源之路 GitHub:https://github.com/apache/dolphinscheduler   ​ 版本发布 2022/8/10 2022 年 8 ...

  9. Apache DolphinScheduler 2.0.1 来了,备受期待的一键升级、插件化终于实现

    ✎ 编 者 按:好消息!Apache DolphinScheduler 2.0.1 版本正式发布! 本版本中,DolphinScheduler 经历了一场微内核+插件化的架构改进,70% 的代码被重构 ...

随机推荐

  1. 以圆类 Circle 为基础设计球类 Sphere

    学习内容:实验二以圆类 Circle 为基础设计球类 Sphere 代码示例: import java.util.Scanner; class Point{ private double x; pri ...

  2. 【系统问题】windows10打印就蓝屏-报错误代码“win32kfull.sys”

    现象描述: 打印机一打印电脑就蓝屏,蓝屏错误代码为:win32kfull.sys 原因分析: 2021年3月9日-推送了KB5000802补丁更新(操作系统内部版本19041.867和19042.86 ...

  3. 《Mybatis 手撸专栏》第9章:细化XML语句构建器,完善静态SQL解析

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你只是在解释过程,而他是在阐述高度! 如果不是长时间的沉淀.积累和储备,我一定也没有 ...

  4. 【原创】渗透神器CoblatStrike实践(1)

    渗透神器CoblatStrike实践(1) 前言 正常的渗透测试: ​ 寻找漏洞,利用漏洞,拿到一定的权限 后渗透(CS为代表的): ​ 提升权限,内网渗透,权限维持 工具地址(非官方取到后门多,建议 ...

  5. HIPPO-4J 1.3.0 正式发布:支持 Dubbo、RibbitMQ、RocketMQ 框架线程池

    文章首发在公众号(龙台的技术笔记),之后同步到个人网站:xiaomage.info Hippo-4J 距离上一个版本 1.2.1 已经过去一个月的时间.在此期间,由 8 位贡献者 提交了 170+ c ...

  6. C#.NET中的程序集版本

    更新记录 2022年4月16日:本文迁移自Panda666原博客,原发布时间:2021年8月22日. 在Visual Studio中查看程序集版本 在程序运行中获得程序集版本信息 除了在Visual ...

  7. 重学ES系列之模版字符串

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 深入理解springboot的自动注入

    一.开篇   在平时的开发过程中用的最多的莫属springboot了,都知道springboot中有自动注入的功能,在面试过程中也会问到自动注入,你知道自动注入是怎么回事吗,springboot是如何 ...

  9. MySql字段增删改语句

    新增表字段:alter table 表名 需要添加的字段信息; ALTER TABLE nation add seq VARCHAR(20) COMMENT '顺序' 字段名的修改:alter tab ...

  10. Redis入门到精通01

    Redis入门到精通 目录 Redis入门到精通 一.Redis缓存框架基本介绍 1.1Redis的应用场景 二.Redis的安装方式 2.1Windows操作系统安装Redis 2.2Linux操作 ...