Apache DolphinScheduler(海豚调度) - 1.3 系列核心表结构剖析

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

近日,伯毅同学给社区贡献了工作流核心表结构的剖析文章,非常细致,喜欢的伙伴请转走

1. 工作流总体存储结构

在 dolphinscheduler 库中创建的所有工作流定义(模板)都保存在 t_ds_process_definition 表中.

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

序号字段类型描述
1idint(11)主键
2namevarchar(255)流程定义名称
3versionint(11)流程定义版本
4release_statetinyint(4)流程定义的发布状态:0 未上线 , 1已上线
5project_idint(11)项目id
6user_idint(11)流程定义所属用户id
7process_definition_jsonlongtext流程定义JSON
8descriptiontext流程定义描述
9global_paramstext全局参数
10flagtinyint(4)流程是否可用:0 不可用,1 可用
11locationstext节点坐标信息
12connectstext节点连线信息
13receiverstext收件人
14receivers_cctext抄送人
15create_timedatetime创建时间
16timeoutint(11)超时时间
17tenant_idint(11)租户id
18update_timedatetime更新时间
19modify_byvarchar(36)修改用户
20resource_idsvarchar(255)资源ids

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

公共的数据结构如下表:

序号字段类型描述
1globalParamsArray全局参数
2tasksArray流程中的任务集合 [ 各个类型的结构请参考如下章节]
3tenantIdint租户id
4timeoutint超时时间

数据示例:

{
    "globalParams":[
        {
            "prop":"golbal_bizdate",
            "direct":"IN",
            "type":"VARCHAR",
            "value":"${system.biz.date}"
        }
    ],
    "tasks":Array[1],
    "tenantId":0,
    "timeout":0
}

2. 各任务类型存储结构详解

2.1 Shell 节点

** Shell 节点数据结构如下:**

序号参数名类型描述描述
1idString任务编码
2typeString类型SHELL
3nameString名称
4paramsObject自定义参数Json 格式
5rawScriptStringShell脚本
6localParamsArray自定义参数
7resourceListArray资源文件
8descriptionString描述
9runFlagString运行标识
10conditionResultObject条件分支
11successNodeArray成功跳转节点
12failedNodeArray失败跳转节点
13dependenceObject任务依赖与params互斥
14maxRetryTimesString最大重试次数
15retryIntervalString重试间隔
16timeoutObject超时控制
17taskInstancePriorityString任务优先级
18workerGroupStringWorker 分组
19preTasksArray前置任务

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 节点数据结构如下:**

序号参数名类型描述描述
1idString任务编码
2typeString类型SQL
3nameString名称
4paramsObject自定义参数Json 格式
5typeString数据库类型
6datasourceInt数据源id
7sqlString查询SQL语句
8udfsStringudf函数UDF函数id,以逗号分隔.
9sqlTypeStringSQL节点类型0 查询 , 1 非查询
10titleString邮件标题
11receiversString收件人
12receiversCcString抄送人
13showTypeString邮件显示类型TABLE 表格 , ATTACHMENT附件
14connParamsString连接参数
15preStatementsArray前置SQL
16postStatementsArray后置SQL
17localParamsArray自定义参数
18descriptionString描述
19runFlagString运行标识
20conditionResultObject条件分支
21successNodeArray成功跳转节点
22failedNodeArray失败跳转节点
23dependenceObject任务依赖与params互斥
24maxRetryTimesString最大重试次数
25retryIntervalString重试间隔
26timeoutObject超时控制
27taskInstancePriorityString任务优先级
28workerGroupStringWorker 分组
29preTasksArray前置任务

** 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 节点数据结构如下:**

序号参数名类型描述描述
1idString任务编码
2typeString类型SPARK
3nameString名称
4paramsObject自定义参数Json 格式
5mainClassString运行主类
6mainArgsString运行参数
7othersString其他参数
8mainJarObject程序 jar 包
9deployModeString部署模式local,client,cluster
10driverCoresStringdriver核数
11driverMemoryStringdriver 内存数
12numExecutorsStringexecutor数量
13executorMemoryStringexecutor内存
14executorCoresStringexecutor核数
15programTypeString程序类型JAVA,SCALA,PYTHON
16sparkVersionStringSpark 版本SPARK1 , SPARK2
17localParamsArray自定义参数
18resourceListArray资源文件
19descriptionString描述
20runFlagString运行标识
21conditionResultObject条件分支
22successNodeArray成功跳转节点
23failedNodeArray失败跳转节点
24dependenceObject任务依赖与params互斥
25maxRetryTimesString最大重试次数
26retryIntervalString重试间隔
27timeoutObject超时控制
28taskInstancePriorityString任务优先级
29workerGroupStringWorker 分组
30preTasksArray前置任务

** 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) 节点数据结构如下:**

序号参数名类型描述描述
1idString任务编码
2typeString类型MR
3nameString名称
4paramsObject自定义参数Json 格式
5mainClassString运行主类
6mainArgsString运行参数
7othersString其他参数
8mainJarObject程序 jar 包
9programTypeString程序类型JAVA,PYTHON
10localParamsArray自定义参数
11resourceListArray资源文件
12descriptionString描述
13runFlagString运行标识
14conditionResultObject条件分支
15successNodeArray成功跳转节点
16failedNodeArray失败跳转节点
17dependenceObject任务依赖与params互斥
18maxRetryTimesString最大重试次数
19retryIntervalString重试间隔
20timeoutObject超时控制
21taskInstancePriorityString任务优先级
22workerGroupStringWorker 分组
23preTasksArray前置任务

** 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 节点数据结构如下:**

序号参数名类型描述描述
1idString任务编码
2typeString类型PYTHON
3nameString名称
4paramsObject自定义参数Json 格式
5rawScriptStringPython脚本
6localParamsArray自定义参数
7resourceListArray资源文件
8descriptionString描述
9runFlagString运行标识
10conditionResultObject条件分支
11successNodeArray成功跳转节点
12failedNodeArray失败跳转节点
13dependenceObject任务依赖与params互斥
14maxRetryTimesString最大重试次数
15retryIntervalString重试间隔
16timeoutObject超时控制
17taskInstancePriorityString任务优先级
18workerGroupStringWorker 分组
19preTasksArray前置任务

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 节点数据结构如下:

序号参数名类型描述描述
1idString任务编码
2typeString类型FLINK
3nameString名称
4paramsObject自定义参数Json 格式
5mainClassString运行主类
6mainArgsString运行参数
7othersString其他参数
8mainJarObject程序 jar 包
9deployModeString部署模式local,client,cluster
10slotStringslot数量
11taskManagerStringtaskManage数量
12taskManagerMemoryStringtaskManager内存数
13jobManagerMemoryStringjobManager内存数
14programTypeString程序类型JAVA,SCALA,PYTHON
15localParamsArray自定义参数
16resourceListArray资源文件
17descriptionString描述
18runFlagString运行标识
19conditionResultObject条件分支
20successNodeArray成功跳转节点
21failedNodeArray失败跳转节点
22dependenceObject任务依赖与params互斥
23maxRetryTimesString最大重试次数
24retryIntervalString重试间隔
25timeoutObject超时控制
26taskInstancePriorityString任务优先级
27workerGroupStringWorker 分组
38preTasksArray前置任务

** 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 节点数据结构如下:

序号参数名类型描述描述
1idString任务编码
2typeString类型HTTP
3nameString名称
4paramsObject自定义参数Json 格式
5urlString请求地址
6httpMethodString请求方式GET,POST,HEAD,PUT,DELETE
7httpParamsArray请求参数
8httpCheckConditionString校验条件默认响应码200
9conditionString校验内容
10localParamsArray自定义参数
11descriptionString描述
12runFlagString运行标识
13conditionResultObject条件分支
14successNodeArray成功跳转节点
15failedNodeArray失败跳转节点
16dependenceObject任务依赖与params互斥
17maxRetryTimesString最大重试次数
18retryIntervalString重试间隔
19timeoutObject超时控制
20taskInstancePriorityString任务优先级
21workerGroupStringWorker 分组
22preTasksArray前置任务

** 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 节点数据结构如下:**

序号参数名类型描述描述
1idString任务编码
2typeString类型DATAX
3nameString名称
4paramsObject自定义参数Json 格式
5customConfigInt自定义类型0定制 , 1自定义
6dsTypeString源数据库类型
7dataSourceInt源数据库ID
8dtTypeString目标数据库类型
9dataTargetInt目标数据库ID
10sqlStringSQL语句
11targetTableString目标表
12jobSpeedByteInt限流(字节数)
13jobSpeedRecordInt限流(记录数)
14preStatementsArray前置SQL
15postStatementsArray后置SQL
16jsonString自定义配置customConfig=1时生效
17localParamsArray自定义参数customConfig=1时生效
18descriptionString描述
19runFlagString运行标识
20conditionResultObject条件分支
21successNodeArray成功跳转节点
22failedNodeArray失败跳转节点
23dependenceObject任务依赖与params互斥
24maxRetryTimesString最大重试次数
25retryIntervalString重试间隔
26timeoutObject超时控制
27taskInstancePriorityString任务优先级
28workerGroupStringWorker 分组
29preTasksArray前置任务

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 节点数据结构如下:

序号参数名类型描述描述
1idString任务编码
2typeString类型SQOOP
3nameString名称
4paramsObject自定义参数JSON 格式
5concurrencyInt并发度
6modelTypeString流向import,export
7sourceTypeString数据源类型
8sourceParamsString数据源参数JSON格式
9targetTypeString目标数据类型
10targetParamsString目标数据参数JSON格式
11localParamsArray自定义参数
12descriptionString描述
13runFlagString运行标识
14conditionResultObject条件分支
15successNodeArray成功跳转节点
16failedNodeArray失败跳转节点
17dependenceObject任务依赖与params互斥
18maxRetryTimesString最大重试次数
19retryIntervalString重试间隔
20timeoutObject超时控制
21taskInstancePriorityString任务优先级
22workerGroupStringWorker 分组
23preTasksArray前置任务

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 条件分支节点

条件分支节点数据结构如下:

序号参数名类型描述描述
1idString任务编码
2typeString类型SHELL
3nameString名称
4paramsObject自定义参数null
5descriptionString描述
6runFlagString运行标识
7conditionResultObject条件分支
8successNodeArray成功跳转节点
9failedNodeArray失败跳转节点
10dependenceObject任务依赖与params互斥
11maxRetryTimesString最大重试次数
12retryIntervalString重试间隔
13timeoutObject超时控制
14taskInstancePriorityString任务优先级
15workerGroupStringWorker 分组
16preTasksArray前置任务

条件分支节点数据样例:

{
    "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子流程节点

子流程节点数据结构如下:

序号参数名类型描述描述
1idString任务编码
2typeString类型SHELL
3nameString名称
4paramsObject自定义参数Json 格式
5processDefinitionIdInt流程定义id
6descriptionString描述
7runFlagString运行标识
8conditionResultObject条件分支
9successNodeArray成功跳转节点
10failedNodeArray失败跳转节点
11dependenceObject任务依赖与params互斥
12maxRetryTimesString最大重试次数
13retryIntervalString重试间隔
14timeoutObject超时控制
15taskInstancePriorityString任务优先级
16workerGroupStringWorker 分组
17preTasksArray前置任务

子流程节点数据样例:

{
            "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)节点数据结构如下:

序号参数名类型描述描述
1idString任务编码
2typeString类型DEPENDENT
3nameString名称
4paramsObject自定义参数Json 格式
5rawScriptStringShell脚本
6localParamsArray自定义参数
7resourceListArray资源文件
8descriptionString描述
9runFlagString运行标识
10conditionResultObject条件分支
11successNodeArray成功跳转节点
12failedNodeArray失败跳转节点
13dependenceObject任务依赖与params互斥
14relationString关系AND,OR
15dependTaskListArray依赖任务清单
16maxRetryTimesString最大重试次数
17retryIntervalString重试间隔
18timeoutObject超时控制
19taskInstancePriorityString任务优先级
20workerGroupStringWorker 分组
21preTasksArray前置任务

依赖(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人。

file

Apache DolphinScheduler 部分用户案例(排名不分先后)

已经有300多家企业和科研机构在使用DolphinScheduler,来处理各类调度和定时任务,另有500多家公司开通了海豚调度的试用:
file

Apache DolphinScheduler项目起源 - 需求决定

file

Apache DolphinScheduler四大特性

file

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

file

加入 Apache DolphinScheduler

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

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

  • 找到带有”easy to fix”标记或者一些非常简单的issue(比如拼写错误等),先通过第一个PR熟悉提交流程,如果有任何疑问,欢迎联系
    file
<p>首先非常感谢大家选择和使用 DolphinScheduler,非常欢迎大家加入 DolphinScheduler 大家庭,融入开源世界!</p> <p>我们鼓励任何形式的参与社区,最终成为 Committer 或 PPMC,如:</p> <ul><li>将遇到的问题通过 github 上 <a href="https://github.com/apache/incubator-dolphinscheduler/issues">issue</a> 的形式反馈出来</li><li>回答别人遇到的 issue 问题</li><li>帮助完善文档</li><li>帮助项目增加测试用例</li><li>为代码添加注释</li><li>提交修复 Bug 或者 Feature 的 PR</li><li>发应用案例实践、调度流程分析或者与调度相关的技术文章</li><li>帮助推广 DolphinScheduler,参与技术大会或者 meetup 的分享等</li></ul> <p>欢迎加入贡献的队伍,加入开源从提交第一个 PR 开始</p> <ul><li>比如添加代码注释或找到带有 ”easy to fix” 标记或一些非常简单的 issue(拼写错误等) 等等,先通过第一个简单的 PR 熟悉提交流程</li></ul> <p>注:贡献不仅仅限于 PR 哈,对促进项目发展的都是贡献</p> <p>相信参与 DolphinScheduler,一定会让您从开源中受益!</p> <p>1. 参与文档贡献</p> <p>参考<a href="https://dolphinscheduler.apache.org/zh-cn/docs/development/document.html">参与贡献-文档需知</a></p> <p>2. 参与代码贡献</p> <p>参考<a href="https://dolphinscheduler.apache.org/zh-cn/docs/development/issue.html">参与贡献 Issue 需知</a>,<a href="https://dolphinscheduler.apache.org/zh-cn/docs/development/pull-request.html">参与贡献 Pull Request 需知</a>,<a href="https://dolphinscheduler.apache.org/zh-cn/docs/development/commit_message.html">参与贡献 CommitMessage 需知</a></p> <p>3. 如何领取 Issue,提交 Pull Request</p> <p>如果你想实现某个 Feature 或者修复某个 Bug。请参考以下内容:</p> <ul><li>所有的 Bug 与新 Feature 建议使用 Issues Page 进行管理。</li><li>如果想要开发实现某个 Feature 功能,请先回复该功能所关联的 Issue,明你当前正在这个 Issue 上工作。 并在回复的时候为自己设置一个 <strong>deadline</strong>,并添加的回复内容中。</li><li>最好在核心贡献者找到一个导师(指导者),导师会在设计与功能实现上给予即时的反馈。</li><li>你应该新建一个分支来开始你的工作,分支的名字参考<a href="https://dolphinscheduler.apache.org/zh-cn/docs/development/pull-request.html">参与贡献 Pull Request 需知</a>。比如,你想完成 feature 功能并提交了 Issue 111,那么你的 branch 名字应为 feature-111。 功能名称可与导师讨论后确定。</li><li>完成后,发送一个 Pull Request 到 incubator-dolphinscheduler,提交过程具体请参考下面《<a href="https://dolphinscheduler.apache.org/zh-cn/docs/development/submit-code.html">提交代码流程</a>》。</li></ul> <p>如果是想提交 Pull Request 完成某一个 Feature 或者修复某个 Bug,这里都建议大家从小处做起,完成一个小功能就提交一次,每次别改动太多文件,改动文件太多也会给 Reviewer 造成很大的心理压力,建议通过多次 Pull Request 的方式完成。</p> <p>官网有详细的提交流程,欢迎参考:<a href="https://dolphinscheduler.apache.org/zh-cn/docs/development/contribute.html">https://dolphinscheduler.apache.org/zh-cn/docs/development/contribute.html</a></p>
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页