Apache DolphinScheduler(海豚调度) - 1.3 系列核心表结构剖析
Apache DolphinScheduler 是一个分布式去中心化,易扩展的可视化 DAG 工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
近日,伯毅同学给社区贡献了工作流核心表结构的剖析文章,非常细致,喜欢的伙伴请转走
1. 工作流总体存储结构
在 dolphinscheduler 库中创建的所有工作流定义(模板)都保存在 t_ds_process_definition 表中.
该数据库表结构如下表所示:
序号 | 字段 | 类型 | 描述 |
---|---|---|---|
1 | id | int(11) | 主键 |
2 | name | varchar(255) | 流程定义名称 |
3 | version | int(11) | 流程定义版本 |
4 | release_state | tinyint(4) | 流程定义的发布状态:0 未上线 , 1已上线 |
5 | project_id | int(11) | 项目id |
6 | user_id | int(11) | 流程定义所属用户id |
7 | process_definition_json | longtext | 流程定义JSON |
8 | description | text | 流程定义描述 |
9 | global_params | text | 全局参数 |
10 | flag | tinyint(4) | 流程是否可用:0 不可用,1 可用 |
11 | locations | text | 节点坐标信息 |
12 | connects | text | 节点连线信息 |
13 | receivers | text | 收件人 |
14 | receivers_cc | text | 抄送人 |
15 | create_time | datetime | 创建时间 |
16 | timeout | int(11) | 超时时间 |
17 | tenant_id | int(11) | 租户id |
18 | update_time | datetime | 更新时间 |
19 | modify_by | varchar(36) | 修改用户 |
20 | resource_ids | varchar(255) | 资源ids |
其中 process_definition_json 字段为核心字段, 定义了 DAG 图中的任务信息.该数据以JSON 的方式进行存储.
公共的数据结构如下表:
序号 | 字段 | 类型 | 描述 |
---|---|---|---|
1 | globalParams | Array | 全局参数 |
2 | tasks | Array | 流程中的任务集合 [ 各个类型的结构请参考如下章节] |
3 | tenantId | int | 租户id |
4 | timeout | int | 超时时间 |
数据示例:
{
"globalParams":[
{
"prop":"golbal_bizdate",
"direct":"IN",
"type":"VARCHAR",
"value":"${system.biz.date}"
}
],
"tasks":Array[1],
"tenantId":0,
"timeout":0
}
2. 各任务类型存储结构详解
2.1 Shell 节点
** Shell 节点数据结构如下:**
序号 | 参数名 | 类型 | 描述 | 描述 | |
---|---|---|---|---|---|
1 | id | String | 任务编码 | ||
2 | type | String | 类型 | SHELL | |
3 | name | String | 名称 | ||
4 | params | Object | 自定义参数 | Json 格式 | |
5 | rawScript | String | Shell脚本 | ||
6 | localParams | Array | 自定义参数 | ||
7 | resourceList | Array | 资源文件 | ||
8 | description | String | 描述 | ||
9 | runFlag | String | 运行标识 | ||
10 | conditionResult | Object | 条件分支 | ||
11 | successNode | Array | 成功跳转节点 | ||
12 | failedNode | Array | 失败跳转节点 | ||
13 | dependence | Object | 任务依赖 | 与params互斥 | |
14 | maxRetryTimes | String | 最大重试次数 | ||
15 | retryInterval | String | 重试间隔 | ||
16 | timeout | Object | 超时控制 | ||
17 | taskInstancePriority | String | 任务优先级 | ||
18 | workerGroup | String | Worker 分组 | ||
19 | preTasks | Array | 前置任务 |
Shell 节点数据样例:
{
"type":"SHELL",
"id":"tasks-80760",
"name":"Shell Task",
"params":{
"resourceList":[
{
"id":3,
"name":"run.sh",
"res":"run.sh"
}
],
"localParams":[
],
"rawScript":"echo "This is a shell script""
},
"description":"",
"runFlag":"NORMAL",
"conditionResult":{
"successNode":[
""
],
"failedNode":[
""
]
},
"dependence":{
},
"maxRetryTimes":"0",
"retryInterval":"1",
"timeout":{
"strategy":"",
"interval":null,
"enable":false
},
"taskInstancePriority":"MEDIUM",
"workerGroup":"default",
"preTasks":[
]
}
2.2 SQL节点
通过 SQL 对指定的数据源进行数据查询、更新操作.
** SQL 节点数据结构如下:**
序号 | 参数名 | 类型 | 描述 | 描述 | |
---|---|---|---|---|---|
1 | id | String | 任务编码 | ||
2 | type | String | 类型 | SQL | |
3 | name | String | 名称 | ||
4 | params | Object | 自定义参数 | Json 格式 | |
5 | type | String | 数据库类型 | ||
6 | datasource | Int | 数据源id | ||
7 | sql | String | 查询SQL语句 | ||
8 | udfs | String | udf函数 | UDF函数id,以逗号分隔. | |
9 | sqlType | String | SQL节点类型 | 0 查询 , 1 非查询 | |
10 | title | String | 邮件标题 | ||
11 | receivers | String | 收件人 | ||
12 | receiversCc | String | 抄送人 | ||
13 | showType | String | 邮件显示类型 | TABLE 表格 , ATTACHMENT附件 | |
14 | connParams | String | 连接参数 | ||
15 | preStatements | Array | 前置SQL | ||
16 | postStatements | Array | 后置SQL | ||
17 | localParams | Array | 自定义参数 | ||
18 | description | String | 描述 | ||
19 | runFlag | String | 运行标识 | ||
20 | conditionResult | Object | 条件分支 | ||
21 | successNode | Array | 成功跳转节点 | ||
22 | failedNode | Array | 失败跳转节点 | ||
23 | dependence | Object | 任务依赖 | 与params互斥 | |
24 | maxRetryTimes | String | 最大重试次数 | ||
25 | retryInterval | String | 重试间隔 | ||
26 | timeout | Object | 超时控制 | ||
27 | taskInstancePriority | String | 任务优先级 | ||
28 | workerGroup | String | Worker 分组 | ||
29 | preTasks | Array | 前置任务 |
** SQL 节点数据样例:**
{
"type":"SQL",
"id":"tasks-95648",
"name":"SqlTask-Query",
"params":{
"type":"MYSQL",
"datasource":1,
"sql":"select id , namge , age from emp where id = ${id}",
"udfs":"",
"sqlType":"0",
"title":"xxxx@xxx.com",
"receivers":"xxxx@xxx.com",
"receiversCc":"",
"showType":"TABLE",
"localParams":[
{
"prop":"id",
"direct":"IN",
"type":"INTEGER",
"value":"1"
}
],
"connParams":"",
"preStatements":[
"insert into emp ( id,name ) value (1,'Li' )"
],
"postStatements":[
]
},
"description":"",
"runFlag":"NORMAL",
"conditionResult":{
"successNode":[
""
],
"failedNode":[
""
]
},
"dependence":{
},
"maxRetryTimes":"0",
"retryInterval":"1",
"timeout":{
"strategy":"",
"interval":null,
"enable":false
},
"taskInstancePriority":"MEDIUM",
"workerGroup":"default",
"preTasks":[
]
}
2.3 Spark 节点
** Spark 节点数据结构如下:**
序号 | 参数名 | 类型 | 描述 | 描述 | |
---|---|---|---|---|---|
1 | id | String | 任务编码 | ||
2 | type | String | 类型 | SPARK | |
3 | name | String | 名称 | ||
4 | params | Object | 自定义参数 | Json 格式 | |
5 | mainClass | String | 运行主类 | ||
6 | mainArgs | String | 运行参数 | ||
7 | others | String | 其他参数 | ||
8 | mainJar | Object | 程序 jar 包 | ||
9 | deployMode | String | 部署模式 | local,client,cluster | |
10 | driverCores | String | driver核数 | ||
11 | driverMemory | String | driver 内存数 | ||
12 | numExecutors | String | executor数量 | ||
13 | executorMemory | String | executor内存 | ||
14 | executorCores | String | executor核数 | ||
15 | programType | String | 程序类型 | JAVA,SCALA,PYTHON | |
16 | sparkVersion | String | Spark 版本 | SPARK1 , SPARK2 | |
17 | localParams | Array | 自定义参数 | ||
18 | resourceList | Array | 资源文件 | ||
19 | description | String | 描述 | ||
20 | runFlag | String | 运行标识 | ||
21 | conditionResult | Object | 条件分支 | ||
22 | successNode | Array | 成功跳转节点 | ||
23 | failedNode | Array | 失败跳转节点 | ||
24 | dependence | Object | 任务依赖 | 与params互斥 | |
25 | maxRetryTimes | String | 最大重试次数 | ||
26 | retryInterval | String | 重试间隔 | ||
27 | timeout | Object | 超时控制 | ||
28 | taskInstancePriority | String | 任务优先级 | ||
29 | workerGroup | String | Worker 分组 | ||
30 | preTasks | Array | 前置任务 |
** Spark 节点数据样例:**
{
"type":"SPARK",
"id":"tasks-87430",
"name":"SparkTask",
"params":{
"mainClass":"org.apache.spark.examples.SparkPi",
"mainJar":{
"id":4
},
"deployMode":"cluster",
"resourceList":[
{
"id":3,
"name":"run.sh",
"res":"run.sh"
}
],
"localParams":[
],
"driverCores":1,
"driverMemory":"512M",
"numExecutors":2,
"executorMemory":"2G",
"executorCores":2,
"mainArgs":"10",
"others":"",
"programType":"SCALA",
"sparkVersion":"SPARK2"
},
"description":"",
"runFlag":"NORMAL",
"conditionResult":{
"successNode":[
""
],
"failedNode":[
""
]
},
"dependence":{
},
"maxRetryTimes":"0",
"retryInterval":"1",
"timeout":{
"strategy":"",
"interval":null,
"enable":false
},
"taskInstancePriority":"MEDIUM",
"workerGroup":"default",
"preTasks":[
]
}
2.4 MapReduce(MR)节点
** MapReduce(MR) 节点数据结构如下:**
序号 | 参数名 | 类型 | 描述 | 描述 | |
---|---|---|---|---|---|
1 | id | String | 任务编码 | ||
2 | type | String | 类型 | MR | |
3 | name | String | 名称 | ||
4 | params | Object | 自定义参数 | Json 格式 | |
5 | mainClass | String | 运行主类 | ||
6 | mainArgs | String | 运行参数 | ||
7 | others | String | 其他参数 | ||
8 | mainJar | Object | 程序 jar 包 | ||
9 | programType | String | 程序类型 | JAVA,PYTHON | |
10 | localParams | Array | 自定义参数 | ||
11 | resourceList | Array | 资源文件 | ||
12 | description | String | 描述 | ||
13 | runFlag | String | 运行标识 | ||
14 | conditionResult | Object | 条件分支 | ||
15 | successNode | Array | 成功跳转节点 | ||
16 | failedNode | Array | 失败跳转节点 | ||
17 | dependence | Object | 任务依赖 | 与params互斥 | |
18 | maxRetryTimes | String | 最大重试次数 | ||
19 | retryInterval | String | 重试间隔 | ||
20 | timeout | Object | 超时控制 | ||
21 | taskInstancePriority | String | 任务优先级 | ||
22 | workerGroup | String | Worker 分组 | ||
23 | preTasks | Array | 前置任务 |
** MapReduce(MR) 节点数据样例:**
{
"type":"MR",
"id":"tasks-28997",
"name":"MRTask",
"params":{
"mainClass":"wordcount",
"mainJar":{
"id":5
},
"resourceList":[
{
"id":3,
"name":"run.sh",
"res":"run.sh"
}
],
"localParams":[
],
"mainArgs":"/tmp/wordcount/input /tmp/wordcount/output/",
"others":"",
"programType":"JAVA"
},
"description":"",
"runFlag":"NORMAL",
"conditionResult":{
"successNode":[
""
],
"failedNode":[
""
]
},
"dependence":{
},
"maxRetryTimes":"0",
"retryInterval":"1",
"timeout":{
"strategy":"",
"interval":null,
"enable":false
},
"taskInstancePriority":"MEDIUM",
"workerGroup":"default",
"preTasks":[
]
}
2.5 Python节点
** Python 节点数据结构如下:**
序号 | 参数名 | 类型 | 描述 | 描述 | |
---|---|---|---|---|---|
1 | id | String | 任务编码 | ||
2 | type | String | 类型 | PYTHON | |
3 | name | String | 名称 | ||
4 | params | Object | 自定义参数 | Json 格式 | |
5 | rawScript | String | Python脚本 | ||
6 | localParams | Array | 自定义参数 | ||
7 | resourceList | Array | 资源文件 | ||
8 | description | String | 描述 | ||
9 | runFlag | String | 运行标识 | ||
10 | conditionResult | Object | 条件分支 | ||
11 | successNode | Array | 成功跳转节点 | ||
12 | failedNode | Array | 失败跳转节点 | ||
13 | dependence | Object | 任务依赖 | 与params互斥 | |
14 | maxRetryTimes | String | 最大重试次数 | ||
15 | retryInterval | String | 重试间隔 | ||
16 | timeout | Object | 超时控制 | ||
17 | taskInstancePriority | String | 任务优先级 | ||
18 | workerGroup | String | Worker 分组 | ||
19 | preTasks | Array | 前置任务 |
Python节点数据样例:
{
"type":"PYTHON",
"id":"tasks-5463",
"name":"Python Task",
"params":{
"resourceList":[
{
"id":3,
"name":"run.sh",
"res":"run.sh"
}
],
"localParams":[
],
"rawScript":"print("This is a python script")"
},
"description":"",
"runFlag":"NORMAL",
"conditionResult":{
"successNode":[
""
],
"failedNode":[
""
]
},
"dependence":{
},
"maxRetryTimes":"0",
"retryInterval":"1",
"timeout":{
"strategy":"",
"interval":null,
"enable":false
},
"taskInstancePriority":"MEDIUM",
"workerGroup":"default",
"preTasks":[
]
}
2.6 Flink节点
Flink 节点数据结构如下:
序号 | 参数名 | 类型 | 描述 | 描述 | |
---|---|---|---|---|---|
1 | id | String | 任务编码 | ||
2 | type | String | 类型 | FLINK | |
3 | name | String | 名称 | ||
4 | params | Object | 自定义参数 | Json 格式 | |
5 | mainClass | String | 运行主类 | ||
6 | mainArgs | String | 运行参数 | ||
7 | others | String | 其他参数 | ||
8 | mainJar | Object | 程序 jar 包 | ||
9 | deployMode | String | 部署模式 | local,client,cluster | |
10 | slot | String | slot数量 | ||
11 | taskManager | String | taskManage数量 | ||
12 | taskManagerMemory | String | taskManager内存数 | ||
13 | jobManagerMemory | String | jobManager内存数 | ||
14 | programType | String | 程序类型 | JAVA,SCALA,PYTHON | |
15 | localParams | Array | 自定义参数 | ||
16 | resourceList | Array | 资源文件 | ||
17 | description | String | 描述 | ||
18 | runFlag | String | 运行标识 | ||
19 | conditionResult | Object | 条件分支 | ||
20 | successNode | Array | 成功跳转节点 | ||
21 | failedNode | Array | 失败跳转节点 | ||
22 | dependence | Object | 任务依赖 | 与params互斥 | |
23 | maxRetryTimes | String | 最大重试次数 | ||
24 | retryInterval | String | 重试间隔 | ||
25 | timeout | Object | 超时控制 | ||
26 | taskInstancePriority | String | 任务优先级 | ||
27 | workerGroup | String | Worker 分组 | ||
38 | preTasks | Array | 前置任务 |
** Flink 节点数据样例:**
{
"type":"FLINK",
"id":"tasks-17135",
"name":"FlinkTask",
"params":{
"mainClass":"com.flink.demo",
"mainJar":{
"id":6
},
"deployMode":"cluster",
"resourceList":[
{
"id":3,
"name":"run.sh",
"res":"run.sh"
}
],
"localParams":[
],
"slot":1,
"taskManager":"2",
"jobManagerMemory":"1G",
"taskManagerMemory":"2G",
"executorCores":2,
"mainArgs":"100",
"others":"",
"programType":"SCALA"
},
"description":"",
"runFlag":"NORMAL",
"conditionResult":{
"successNode":[
""
],
"failedNode":[
""
]
},
"dependence":{
},
"maxRetryTimes":"0",
"retryInterval":"1",
"timeout":{
"strategy":"",
"interval":null,
"enable":false
},
"taskInstancePriority":"MEDIUM",
"workerGroup":"default",
"preTasks":[
]
}
2.7 Http 节点
Http 节点数据结构如下:
序号 | 参数名 | 类型 | 描述 | 描述 | |
---|---|---|---|---|---|
1 | id | String | 任务编码 | ||
2 | type | String | 类型 | HTTP | |
3 | name | String | 名称 | ||
4 | params | Object | 自定义参数 | Json 格式 | |
5 | url | String | 请求地址 | ||
6 | httpMethod | String | 请求方式 | GET,POST,HEAD,PUT,DELETE | |
7 | httpParams | Array | 请求参数 | ||
8 | httpCheckCondition | String | 校验条件 | 默认响应码200 | |
9 | condition | String | 校验内容 | ||
10 | localParams | Array | 自定义参数 | ||
11 | description | String | 描述 | ||
12 | runFlag | String | 运行标识 | ||
13 | conditionResult | Object | 条件分支 | ||
14 | successNode | Array | 成功跳转节点 | ||
15 | failedNode | Array | 失败跳转节点 | ||
16 | dependence | Object | 任务依赖 | 与params互斥 | |
17 | maxRetryTimes | String | 最大重试次数 | ||
18 | retryInterval | String | 重试间隔 | ||
19 | timeout | Object | 超时控制 | ||
20 | taskInstancePriority | String | 任务优先级 | ||
21 | workerGroup | String | Worker 分组 | ||
22 | preTasks | Array | 前置任务 |
** Http 节点数据样例:**
{
"type":"HTTP",
"id":"tasks-60499",
"name":"HttpTask",
"params":{
"localParams":[
],
"httpParams":[
{
"prop":"id",
"httpParametersType":"PARAMETER",
"value":"1"
},
{
"prop":"name",
"httpParametersType":"PARAMETER",
"value":"Bo"
}
],
"url":"https://www.xxxxx.com:9012",
"httpMethod":"POST",
"httpCheckCondition":"STATUS_CODE_DEFAULT",
"condition":""
},
"description":"",
"runFlag":"NORMAL",
"conditionResult":{
"successNode":[
""
],
"failedNode":[
""
]
},
"dependence":{
},
"maxRetryTimes":"0",
"retryInterval":"1",
"timeout":{
"strategy":"",
"interval":null,
"enable":false
},
"taskInstancePriority":"MEDIUM",
"workerGroup":"default",
"preTasks":[
]
}
2.8 DataX节点
** DataX 节点数据结构如下:**
序号 | 参数名 | 类型 | 描述 | 描述 | |
---|---|---|---|---|---|
1 | id | String | 任务编码 | ||
2 | type | String | 类型 | DATAX | |
3 | name | String | 名称 | ||
4 | params | Object | 自定义参数 | Json 格式 | |
5 | customConfig | Int | 自定义类型 | 0定制 , 1自定义 | |
6 | dsType | String | 源数据库类型 | ||
7 | dataSource | Int | 源数据库ID | ||
8 | dtType | String | 目标数据库类型 | ||
9 | dataTarget | Int | 目标数据库ID | ||
10 | sql | String | SQL语句 | ||
11 | targetTable | String | 目标表 | ||
12 | jobSpeedByte | Int | 限流(字节数) | ||
13 | jobSpeedRecord | Int | 限流(记录数) | ||
14 | preStatements | Array | 前置SQL | ||
15 | postStatements | Array | 后置SQL | ||
16 | json | String | 自定义配置 | customConfig=1时生效 | |
17 | localParams | Array | 自定义参数 | customConfig=1时生效 | |
18 | description | String | 描述 | ||
19 | runFlag | String | 运行标识 | ||
20 | conditionResult | Object | 条件分支 | ||
21 | successNode | Array | 成功跳转节点 | ||
22 | failedNode | Array | 失败跳转节点 | ||
23 | dependence | Object | 任务依赖 | 与params互斥 | |
24 | maxRetryTimes | String | 最大重试次数 | ||
25 | retryInterval | String | 重试间隔 | ||
26 | timeout | Object | 超时控制 | ||
27 | taskInstancePriority | String | 任务优先级 | ||
28 | workerGroup | String | Worker 分组 | ||
29 | preTasks | Array | 前置任务 |
DataX 节点数据样例:
{
"type":"DATAX",
"id":"tasks-91196",
"name":"DataxTask-DB",
"params":{
"customConfig":0,
"dsType":"MYSQL",
"dataSource":1,
"dtType":"MYSQL",
"dataTarget":1,
"sql":"select id, name ,age from user ",
"targetTable":"emp",
"jobSpeedByte":524288,
"jobSpeedRecord":500,
"preStatements":[
"truncate table emp "
],
"postStatements":[
"truncate table user"
]
},
"description":"",
"runFlag":"NORMAL",
"conditionResult":{
"successNode":[
""
],
"failedNode":[
""
]
},
"dependence":{
},
"maxRetryTimes":"0",
"retryInterval":"1",
"timeout":{
"strategy":"",
"interval":null,
"enable":false
},
"taskInstancePriority":"MEDIUM",
"workerGroup":"default",
"preTasks":[
]
}
2.9 Sqoop节点
Sqoop 节点数据结构如下:
序号 | 参数名 | 类型 | 描述 | 描述 | |
---|---|---|---|---|---|
1 | id | String | 任务编码 | ||
2 | type | String | 类型 | SQOOP | |
3 | name | String | 名称 | ||
4 | params | Object | 自定义参数 | JSON 格式 | |
5 | concurrency | Int | 并发度 | ||
6 | modelType | String | 流向 | import,export | |
7 | sourceType | String | 数据源类型 | ||
8 | sourceParams | String | 数据源参数 | JSON格式 | |
9 | targetType | String | 目标数据类型 | ||
10 | targetParams | String | 目标数据参数 | JSON格式 | |
11 | localParams | Array | 自定义参数 | ||
12 | description | String | 描述 | ||
13 | runFlag | String | 运行标识 | ||
14 | conditionResult | Object | 条件分支 | ||
15 | successNode | Array | 成功跳转节点 | ||
16 | failedNode | Array | 失败跳转节点 | ||
17 | dependence | Object | 任务依赖 | 与params互斥 | |
18 | maxRetryTimes | String | 最大重试次数 | ||
19 | retryInterval | String | 重试间隔 | ||
20 | timeout | Object | 超时控制 | ||
21 | taskInstancePriority | String | 任务优先级 | ||
22 | workerGroup | String | Worker 分组 | ||
23 | preTasks | Array | 前置任务 |
Sqoop 节点数据样例:
{
"type":"SQOOP",
"id":"tasks-82041",
"name":"Sqoop Task",
"params":{
"concurrency":1,
"modelType":"import",
"sourceType":"MYSQL",
"targetType":"HDFS",
"sourceParams":"{"srcType":"MYSQL","srcDatasource":1,"srcTable":"","srcQueryType":"1","srcQuerySql":"selec id , name from user","srcColumnType":"0","srcColumns":"","srcConditionList":[],"mapColumnHive":[{"prop":"hivetype-key","direct":"IN","type":"VARCHAR","value":"hivetype-value"}],"mapColumnJava":[{"prop":"javatype-key","direct":"IN","type":"VARCHAR","value":"javatype-value"}]}",
"targetParams":"{"targetPath":"/user/hive/warehouse/ods.db/user","deleteTargetDir":false,"fileType":"--as-avrodatafile","compressionCodec":"snappy","fieldsTerminated":",","linesTerminated":"@"}",
"localParams":[
]
},
"description":"",
"runFlag":"NORMAL",
"conditionResult":{
"successNode":[
""
],
"failedNode":[
""
]
},
"dependence":{
},
"maxRetryTimes":"0",
"retryInterval":"1",
"timeout":{
"strategy":"",
"interval":null,
"enable":false
},
"taskInstancePriority":"MEDIUM",
"workerGroup":"default",
"preTasks":[
]
}
2.10 条件分支节点
条件分支节点数据结构如下:
序号 | 参数名 | 类型 | 描述 | 描述 | |
---|---|---|---|---|---|
1 | id | String | 任务编码 | ||
2 | type | String | 类型 | SHELL | |
3 | name | String | 名称 | ||
4 | params | Object | 自定义参数 | null | |
5 | description | String | 描述 | ||
6 | runFlag | String | 运行标识 | ||
7 | conditionResult | Object | 条件分支 | ||
8 | successNode | Array | 成功跳转节点 | ||
9 | failedNode | Array | 失败跳转节点 | ||
10 | dependence | Object | 任务依赖 | 与params互斥 | |
11 | maxRetryTimes | String | 最大重试次数 | ||
12 | retryInterval | String | 重试间隔 | ||
13 | timeout | Object | 超时控制 | ||
14 | taskInstancePriority | String | 任务优先级 | ||
15 | workerGroup | String | Worker 分组 | ||
16 | preTasks | Array | 前置任务 |
条件分支节点数据样例:
{
"type":"CONDITIONS",
"id":"tasks-96189",
"name":"条件",
"params":{
},
"description":"",
"runFlag":"NORMAL",
"conditionResult":{
"successNode":[
"test04"
],
"failedNode":[
"test05"
]
},
"dependence":{
"relation":"AND",
"dependTaskList":[
]
},
"maxRetryTimes":"0",
"retryInterval":"1",
"timeout":{
"strategy":"",
"interval":null,
"enable":false
},
"taskInstancePriority":"MEDIUM",
"workerGroup":"default",
"preTasks":[
"test01",
"test02"
]
}
2.11子流程节点
子流程节点数据结构如下:
序号 | 参数名 | 类型 | 描述 | 描述 | |
---|---|---|---|---|---|
1 | id | String | 任务编码 | ||
2 | type | String | 类型 | SHELL | |
3 | name | String | 名称 | ||
4 | params | Object | 自定义参数 | Json 格式 | |
5 | processDefinitionId | Int | 流程定义id | ||
6 | description | String | 描述 | ||
7 | runFlag | String | 运行标识 | ||
8 | conditionResult | Object | 条件分支 | ||
9 | successNode | Array | 成功跳转节点 | ||
10 | failedNode | Array | 失败跳转节点 | ||
11 | dependence | Object | 任务依赖 | 与params互斥 | |
12 | maxRetryTimes | String | 最大重试次数 | ||
13 | retryInterval | String | 重试间隔 | ||
14 | timeout | Object | 超时控制 | ||
15 | taskInstancePriority | String | 任务优先级 | ||
16 | workerGroup | String | Worker 分组 | ||
17 | preTasks | Array | 前置任务 |
子流程节点数据样例:
{
"type":"SUB_PROCESS",
"id":"tasks-14806",
"name":"SubProcessTask",
"params":{
"processDefinitionId":2
},
"description":"",
"runFlag":"NORMAL",
"conditionResult":{
"successNode":[
""
],
"failedNode":[
""
]
},
"dependence":{
},
"timeout":{
"strategy":"",
"interval":null,
"enable":false
},
"taskInstancePriority":"MEDIUM",
"workerGroup":"default",
"preTasks":[
]
}
2.12 依赖(DEPENDENT)节点
依赖(DEPENDENT)节点数据结构如下:
序号 | 参数名 | 类型 | 描述 | 描述 | |
---|---|---|---|---|---|
1 | id | String | 任务编码 | ||
2 | type | String | 类型 | DEPENDENT | |
3 | name | String | 名称 | ||
4 | params | Object | 自定义参数 | Json 格式 | |
5 | rawScript | String | Shell脚本 | ||
6 | localParams | Array | 自定义参数 | ||
7 | resourceList | Array | 资源文件 | ||
8 | description | String | 描述 | ||
9 | runFlag | String | 运行标识 | ||
10 | conditionResult | Object | 条件分支 | ||
11 | successNode | Array | 成功跳转节点 | ||
12 | failedNode | Array | 失败跳转节点 | ||
13 | dependence | Object | 任务依赖 | 与params互斥 | |
14 | relation | String | 关系 | AND,OR | |
15 | dependTaskList | Array | 依赖任务清单 | ||
16 | maxRetryTimes | String | 最大重试次数 | ||
17 | retryInterval | String | 重试间隔 | ||
18 | timeout | Object | 超时控制 | ||
19 | taskInstancePriority | String | 任务优先级 | ||
20 | workerGroup | String | Worker 分组 | ||
21 | preTasks | Array | 前置任务 |
依赖(DEPENDENT)节点数据样例:
{
"type":"DEPENDENT",
"id":"tasks-57057",
"name":"DenpendentTask",
"params":{
},
"description":"",
"runFlag":"NORMAL",
"conditionResult":{
"successNode":[
""
],
"failedNode":[
""
]
},
"dependence":{
"relation":"AND",
"dependTaskList":[
{
"relation":"AND",
"dependItemList":[
{
"projectId":1,
"definitionId":7,
"definitionList":[
{
"value":8,
"label":"MRTask"
},
{
"value":7,
"label":"FlinkTask"
},
{
"value":6,
"label":"SparkTask"
},
{
"value":5,
"label":"SqlTask-Update"
},
{
"value":4,
"label":"SqlTask-Query"
},
{
"value":3,
"label":"SubProcessTask"
},
{
"value":2,
"label":"Python Task"
},
{
"value":1,
"label":"Shell Task"
}
],
"depTasks":"ALL",
"cycle":"day",
"dateValue":"today"
}
]
},
{
"relation":"AND",
"dependItemList":[
{
"projectId":1,
"definitionId":5,
"definitionList":[
{
"value":8,
"label":"MRTask"
},
{
"value":7,
"label":"FlinkTask"
},
{
"value":6,
"label":"SparkTask"
},
{
"value":5,
"label":"SqlTask-Update"
},
{
"value":4,
"label":"SqlTask-Query"
},
{
"value":3,
"label":"SubProcessTask"
},
{
"value":2,
"label":"Python Task"
},
{
"value":1,
"label":"Shell Task"
}
],
"depTasks":"SqlTask-Update",
"cycle":"day",
"dateValue":"today"
}
]
}
]
},
"maxRetryTimes":"0",
"retryInterval":"1",
"timeout":{
"strategy":"",
"interval":null,
"enable":false
},
"taskInstancePriority":"MEDIUM",
"workerGroup":"default",
"preTasks":[
]
}
DolphinScheduler 社区介绍:
Apache DolphinScheduler 是一个非常多样化的社区,至今贡献者已近100名, 他们分别来自 30 多家不同的公司。 微信群用户3000人。
Apache DolphinScheduler 部分用户案例(排名不分先后)
已经有300多家企业和科研机构在使用DolphinScheduler,来处理各类调度和定时任务,另有500多家公司开通了海豚调度的试用:
Apache DolphinScheduler项目起源 - 需求决定
Apache DolphinScheduler四大特性
Apache DolphinScheduler 能力:
以DAG图的方式将Task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态
支持丰富的任务类型:Shell、MR、Spark、Flink、SQL(mysql、postgresql、hive、sparksql)、Python、Http、Sub_Process、Procedure等
支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill任务等操作
支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败
支持工作流全局参数及节点自定义参数设置
支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑
支持任务日志在线查看及滚动、在线下载日志等
实现集群HA,通过Zookeeper实现Master集群和Worker集群去中心化
支持对Master/Worker cpu load,memory,cpu在线查看
支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计
支持补数
支持多租户
支持国际化
Apache DolphinScheduler 1.3 新特性
* Worker实现重构,提升Worker性能
* Master和Worker引入Netty通信
* 去zookeeper任务队列
* Worker节点的三种选择:随机、循环和CPU和内存的线性加权负载平衡
* Worker去数据库操作
* 资源中心支持多目录
* 添加 if/else 条件任务
* 添加 sqoop/datax 任务
* 支持 k8s 部署
* 添加DAG流程图一键格式化
* 流程图美化
* 支持 ambari 插件安装
* 批量导出和导入工作流
* 流程定义支持复制
* 大幅简化配置项,简化部署
在线DEMO试用
DolphinScheduler Slogan
加入 Apache DolphinScheduler
在使用 DolphinScheduler 的过程中,如果您有任何问题或者想法、建议,都可以通过Apache 邮件列表参与到 DolphinScheduler 的社区建设中来。
欢迎加入贡献的队伍,加入开源社区从提交第一个 PR开始,
- 找到带有”easy to fix”标记或者一些非常简单的issue(比如拼写错误等),先通过第一个PR熟悉提交流程,如果有任何疑问,欢迎联系
本文由博客群发一文多发等运营工具平台 OpenWrite 发布
Apache DolphinScheduler(海豚调度) - 1.3 系列核心表结构剖析的更多相关文章
- DolphinScheduler - 1.3 系列核心表结构剖析
Apache DolphinScheduler 是一个分布式去中心化,易扩展的可视化 DAG 工作流任务调度系统.致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用. 近日 ...
- 【原创】大数据基础之Hive(4)hive元数据库核心表结构
1 dbs +-------+-----------------------+----------------------------------------------+------------+- ...
- 大数据平台迁移实践 | Apache DolphinScheduler 在当贝大数据环境中的应用
大家下午好,我是来自当贝网络科技大数据平台的基础开发工程师 王昱翔,感谢社区的邀请来参与这次分享,关于 Apache DolphinScheduler 在当贝网络科技大数据环境中的应用. 本次演讲主要 ...
- 日均 6000+ 实例,TB 级数据流量,Apache DolphinScheduler 如何做联通医疗大数据平台的“顶梁柱”?
作者 | 胡泽康 鄞乐炜 作者简介 胡泽康 联通(广东)产业互联网公司 大数据工程师,专注于开源大数据领域,从事大数据平台研发工作 鄞乐炜 联通(广东)产业互联网公司 大数据工程师,主要从事大数据平 ...
- 中国联通改造 Apache DolphinScheduler 资源中心,实现计费环境跨集群调用与数据脚本一站式访问
截止2022年,中国联通用户规模达到4.6亿,占据了全中国人口的30%,随着5G的推广普及,运营商IT系统普遍面临着海量用户.海量话单.多样化业务.组网模式等一系列变革的冲击. 当前,联通每天处理话单 ...
- Apache DolphinScheduler 2.X保姆级源码解析,中国移动工程师揭秘服务调度启动全流程
2022年1月,科学技术部高新技术司副司长梅建平在"第六届中国新金融高峰论坛"上表示,当前数据量已经大大超过了处理能力的上限,若信息技术仍然是渐进式发展,则数据处理能力的提升将远远 ...
- 从 Airflow 到 Apache DolphinScheduler,有赞大数据开发平台的调度系统演进
点击上方 蓝字关注我们 作者 | 宋哲琦 ✎ 编 者 按 在不久前的 Apache DolphinScheduler Meetup 2021 上,有赞大数据开发平台负责人 宋哲琦 带来了平台调度系统 ...
- 暑期 2021 参与社区:新一代工作流调度——Apache DolphinScheduler
在众多企业都在进行数字化转型的大背景下,大数据.人工智能等行业有着十分广阔的前景,其发展也可谓如火如荼.发展过程中这其中当然离不开数据采集.数据流通和数据价值挖掘等各种环节,而各环节的打通需要一个坚实 ...
- 数据平台调度升级改造 | 从Azkaban 平滑过度到 Apache DolphinScheduler 的操作实践
Fordeal的数据平台调度系统之前是基于Azkaban进行二次开发的,但是在用户层面.技术层面都存在一些痛点问题难以被解决.比如在用户层面缺少任务可视化编辑界面.补数等必要功能,导致用户上手难体验差 ...
随机推荐
- Java实现 LeetCode 135 分发糖果
135. 分发糖果 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. ...
- Java实现 LeetCode 130 被围绕的区域
130. 被围绕的区域 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O O ...
- Java实现 LeetCode 240 搜索二维矩阵 II
public static boolean searchMatrix(int[][] matrix, int target) { if(matrix.length == 0) return false ...
- 关于linux免密登录及ssh客户端的使用
操作系统环境: CentOS Linux release 7.7.1908 (Core) 1.首先在linux服务器上,使用ssh-keygen命令生成密钥对文件(一直回车即可,默认使用rsa算法), ...
- 给Linux小白的CentOS8.1基本安装说明
写在前面的话:用过Linux的同学应该都会觉得Linux安装是件非常简单的事情,根本不值得用博客记下来!但是我发现,其实没接触过Linux的同学还真不一定会装,就像在IT行业工作过几年但一直用Wind ...
- 【1】Vim 进阶操作
一.标签 :tabnew one.c 新建标签[♥] 常用 :tabc 关闭文件 :tabp 切换前一个页面 :tabn 切换下一个页面 gt 普通模式下操作 常用 二.窗口 :sp 水平 ...
- multimap遍历与查找
std::multimap<int, std::string> m; m.insert(std::make_pair(0, "w0")); m.insert(std:: ...
- 2w字长文!手撸一套 Java 基础面试题
Java 基础篇 Java 有哪些特点 并发性的: 你可以在其中执行许多语句,而不必一次执行它 面向对象的:基于类和面向对象的编程语言. 独立性的: 支持一次编写,到处运行的独立编程语言,即编译后的代 ...
- mysql where与 having的区别
where是针对磁盘的数据文件,having是针对存在内存的结果集的筛选. 例如: select name ,(xxx - xxx) as a from table where a > 10; ...
- DML_Modifying Data Through Table Expressions_UPDATE
DML_Modifying Data Through Table Expressions_UPDATE之前也学习过使用CTE,再来泛泛的学习下,最后将会将一些书籍上或学习到的CTE来个小结 /* Mi ...