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试用

http://106.75.43.194:8888/

DolphinScheduler Slogan

加入 Apache DolphinScheduler

在使用 DolphinScheduler 的过程中,如果您有任何问题或者想法、建议,都可以通过Apache 邮件列表参与到 DolphinScheduler 的社区建设中来。

欢迎加入贡献的队伍,加入开源社区从提交第一个 PR开始,

  • 找到带有”easy to fix”标记或者一些非常简单的issue(比如拼写错误等),先通过第一个PR熟悉提交流程,如果有任何疑问,欢迎联系

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

Apache DolphinScheduler(海豚调度) - 1.3 系列核心表结构剖析的更多相关文章

  1. DolphinScheduler - 1.3 系列核心表结构剖析

    Apache DolphinScheduler 是一个分布式去中心化,易扩展的可视化 DAG 工作流任务调度系统.致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用. 近日 ...

  2. 【原创】大数据基础之Hive(4)hive元数据库核心表结构

    1 dbs +-------+-----------------------+----------------------------------------------+------------+- ...

  3. 大数据平台迁移实践 | Apache DolphinScheduler 在当贝大数据环境中的应用

    大家下午好,我是来自当贝网络科技大数据平台的基础开发工程师 王昱翔,感谢社区的邀请来参与这次分享,关于 Apache DolphinScheduler 在当贝网络科技大数据环境中的应用. 本次演讲主要 ...

  4. 日均 6000+ 实例,TB 级数据流量,Apache DolphinScheduler 如何做联通医疗大数据平台的“顶梁柱”?

    作者 | 胡泽康 鄞乐炜 作者简介 胡泽康 联通(广东)产业互联网公司  大数据工程师,专注于开源大数据领域,从事大数据平台研发工作 鄞乐炜 联通(广东)产业互联网公司 大数据工程师,主要从事大数据平 ...

  5. 中国联通改造 Apache DolphinScheduler 资源中心,实现计费环境跨集群调用与数据脚本一站式访问

    截止2022年,中国联通用户规模达到4.6亿,占据了全中国人口的30%,随着5G的推广普及,运营商IT系统普遍面临着海量用户.海量话单.多样化业务.组网模式等一系列变革的冲击. 当前,联通每天处理话单 ...

  6. Apache DolphinScheduler 2.X保姆级源码解析,中国移动工程师揭秘服务调度启动全流程

    2022年1月,科学技术部高新技术司副司长梅建平在"第六届中国新金融高峰论坛"上表示,当前数据量已经大大超过了处理能力的上限,若信息技术仍然是渐进式发展,则数据处理能力的提升将远远 ...

  7. 从 Airflow 到 Apache DolphinScheduler,有赞大数据开发平台的调度系统演进

    点击上方 蓝字关注我们 作者 | 宋哲琦 ✎ 编 者 按 在不久前的 Apache  DolphinScheduler Meetup 2021 上,有赞大数据开发平台负责人 宋哲琦 带来了平台调度系统 ...

  8. 暑期 2021 参与社区:新一代工作流调度——Apache DolphinScheduler

    在众多企业都在进行数字化转型的大背景下,大数据.人工智能等行业有着十分广阔的前景,其发展也可谓如火如荼.发展过程中这其中当然离不开数据采集.数据流通和数据价值挖掘等各种环节,而各环节的打通需要一个坚实 ...

  9. 数据平台调度升级改造 | 从Azkaban 平滑过度到 Apache DolphinScheduler 的操作实践

    Fordeal的数据平台调度系统之前是基于Azkaban进行二次开发的,但是在用户层面.技术层面都存在一些痛点问题难以被解决.比如在用户层面缺少任务可视化编辑界面.补数等必要功能,导致用户上手难体验差 ...

随机推荐

  1. Java实现 LeetCode 135 分发糖果

    135. 分发糖果 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. ...

  2. Java实现 LeetCode 130 被围绕的区域

    130. 被围绕的区域 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O O ...

  3. Java实现 LeetCode 240 搜索二维矩阵 II

    public static boolean searchMatrix(int[][] matrix, int target) { if(matrix.length == 0) return false ...

  4. 关于linux免密登录及ssh客户端的使用

    操作系统环境: CentOS Linux release 7.7.1908 (Core) 1.首先在linux服务器上,使用ssh-keygen命令生成密钥对文件(一直回车即可,默认使用rsa算法), ...

  5. 给Linux小白的CentOS8.1基本安装说明

    写在前面的话:用过Linux的同学应该都会觉得Linux安装是件非常简单的事情,根本不值得用博客记下来!但是我发现,其实没接触过Linux的同学还真不一定会装,就像在IT行业工作过几年但一直用Wind ...

  6. 【1】Vim 进阶操作

    一.标签 :tabnew one.c 新建标签[♥] 常用 :tabc 关闭文件   :tabp 切换前一个页面   :tabn 切换下一个页面   gt 普通模式下操作 常用 二.窗口 :sp 水平 ...

  7. multimap遍历与查找

    std::multimap<int, std::string> m; m.insert(std::make_pair(0, "w0")); m.insert(std:: ...

  8. 2w字长文!手撸一套 Java 基础面试题

    Java 基础篇 Java 有哪些特点 并发性的: 你可以在其中执行许多语句,而不必一次执行它 面向对象的:基于类和面向对象的编程语言. 独立性的: 支持一次编写,到处运行的独立编程语言,即编译后的代 ...

  9. mysql where与 having的区别

    where是针对磁盘的数据文件,having是针对存在内存的结果集的筛选. 例如: select name ,(xxx - xxx) as a from table where a > 10; ...

  10. DML_Modifying Data Through Table Expressions_UPDATE

    DML_Modifying Data Through Table Expressions_UPDATE之前也学习过使用CTE,再来泛泛的学习下,最后将会将一些书籍上或学习到的CTE来个小结 /* Mi ...