Apache DolphinScheduler 1.2.0 task 任务存储结构说明

本文章经授权转载

Table of Contents

    任务总体存储

    Shell节点

    SQL节点

    存储过程节点

    SPARK节点

    MapReduce(MR)节点

    Python节点

    Flink节点

    HTTP节点

    子流程节点

    依赖(DEPENDENT)节点


任务总体存储

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

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

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

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

公共的数据结构如下表:

序号字段类型注释
1globalParamsArray全局参数
2tasksArray

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

3tenantIdint租户id
4timeoutint超时时间

数据示例:

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

Shell节点

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

节点定义结构如下:

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

数据示例:

{
    "type": "SHELL",
    "id": "tasks-17761",
    "name": "shell-task",
    "params": {
        "resourceList": [
            {
                "res": "spark-examples_2.11-2.4.4.jar"
            },
            {
                "res": "hadoop-mapreduce-examples-2.7.4.jar"
            }
        ],
        "localParams": [
            {
                "prop": "local_param",
                "direct": "IN",
                "type": "VARCHAR",
                "value": "global_bizdate"
            }
        ],
        "rawScript": "echo \"thisisashelltask: ${local_param}\""
    },
    "description": "",
    "runFlag": "NORMAL",
    "dependence": {},
    "maxRetryTimes": "0",
    "retryInterval": "1",
    "timeout": {
        "strategy": "",
        "interval": null,
        "enable": false
    },
    "taskInstancePriority": "MEDIUM",
    "workerGroupId": -1,
    "preTasks": []
}

SQL节点

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

节点定义结构如下。

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

数据示例:

{
    "type": "SQL",
    "id": "tasks-17811",
    "name": "SQL节点",
    "params": {
        "type": "MYSQL",
        "datasource": 2,
        "sql": "show databases;",
        "udfs": "",
        "sqlType": "0",
        "title": "SQL节点",
        "receivers": "zhangboyi_mx@163.com",
        "receiversCc": "",
        "showType": "TABLE,ATTACHMENT",
        "localParams": [],
        "connParams": "",
        "preStatements": [
            "select user();"
        ],
        "postStatements": [
            "select database();"
        ]
    },
    "description": "",
    "runFlag": "NORMAL",
    "dependence": {},
    "maxRetryTimes": "0",
    "retryInterval": "1",
    "timeout": {
        "strategy": "",
        "interval": null,
        "enable": false
    },
    "taskInstancePriority": "MEDIUM",
    "workerGroupId": -1,
    "preTasks": []
}

存储过程节点

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

节点定义结构如下:

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

数据示例:

{
    "type": "PROCEDURE",
    "id": "tasks-33589",
    "name": "存储过程节点",
    "params": {
        "type": "MYSQL",
        "datasource": 2,
        "method": "add",
        "localParams": [
            {
                "prop": "in_paramer",
                "direct": "IN",
                "type": "VARCHAR",
                "value": ""
            },
            {
                "prop": "out_paramer",
                "direct": "OUT",
                "type": "VARCHAR",
                "value": ""
            }
        ]
    },
    "description": "",
    "runFlag": "NORMAL",
    "dependence": {},
    "maxRetryTimes": "0",
    "retryInterval": "1",
    "timeout": {
        "strategy": "",
        "interval": null,
        "enable": false
    },
    "taskInstancePriority": "MEDIUM",
    "workerGroupId": -1,
    "preTasks": []
}

SPARK节点

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

节点定义结构如下:

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

数据示例:

{
    "type": "SPARK",
    "id": "tasks-46459",
    "name": "SPARK节点",
    "params": {
        "mainClass": "org.apache.spark.examples.SparkPi",
        "mainJar": {
            "res": "spark-examples_2.11-2.4.4.jar"
        },
        "deployMode": "cluster",
        "resourceList": [
            {
                "res": "spark-examples_2.11-2.4.4.jar"
            }
        ],
        "localParams": [],
        "driverCores": 1,
        "driverMemory": "512M",
        "numExecutors": 2,
        "executorMemory": "2G",
        "executorCores": 2,
        "mainArgs": "10",
        "others": "",
        "programType": "SCALA",
        "sparkVersion": "SPARK2"
    },
    "description": "",
    "runFlag": "NORMAL",
    "dependence": {},
    "maxRetryTimes": "0",
    "retryInterval": "1",
    "timeout": {
        "strategy": "",
        "interval": null,
        "enable": false
    },
    "taskInstancePriority": "MEDIUM",
    "workerGroupId": -1,
    "preTasks": []
}

MapReduce(MR)节点

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

节点定义结构如下:

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

数据示例:

{
    "type": "MR",
    "id": "tasks-70322",
    "name": "MapReduce(MR)节点",
    "params": {
        "mainClass": "wordcount",
        "mainJar": {
            "res": "hadoop-mapreduce-examples-2.7.4.jar"
        },
        "resourceList": [
            {
                "res": "hadoop-mapreduce-examples-2.7.4.jar"
            }
        ],
        "localParams": [],
        "mainArgs": "/wordcount/input /wordcount/output/result",
        "others": "",
        "programType": "JAVA"
    },
    "description": "",
    "runFlag": "NORMAL",
    "dependence": {},
    "maxRetryTimes": "0",
    "retryInterval": "1",
    "timeout": {
        "strategy": "",
        "interval": null,
        "enable": false
    },
    "taskInstancePriority": "MEDIUM",
    "workerGroupId": -1,
    "preTasks": []
}

Python节点

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

节点定义结构如下:

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

数据示例:

{
  "type": "PYTHON",
  "id": "tasks-23887",
  "name": " Python节点",
  "params": {
    "resourceList": [
      {
        "res": "hadoop-mapreduce-examples-2.7.4.jar"
      },
      {
        "res": "spark-examples_2.11-2.4.4.jar"
      }
    ],
    "localParams": [],
    "rawScript": "print(\"this is python task ..\")"
  },
  "description": "",
  "runFlag": "NORMAL",
  "dependence": {},
  "maxRetryTimes": "0",
  "retryInterval": "1",
  "timeout": {
    "strategy": "",
    "interval": null,
    "enable": false
  },
  "taskInstancePriority": "MEDIUM",
  "workerGroupId": -1,
  "preTasks": []
}

Flink节点

根据配置调用 Flink 请求。

节点定义结构如下:

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

数据示例:

{
    "type": "FLINK",
    "id": "tasks-84250",
    "name": "Flink节点",
    "params": {
        "mainClass": "org.apache.spark.examples.SparkPi",
        "mainJar": {
            "res": "spark-examples_2.11-2.4.4.jar"
        },
        "deployMode": "cluster",
        "resourceList": [],
        "localParams": [],
        "slot": 1,
        "taskManager": "2",
        "jobManagerMemory": "1G",
        "taskManagerMemory": "2G",
        "executorCores": 2,
        "mainArgs": "10",
        "others": "",
        "programType": "SCALA"
    },
    "description": "",
    "runFlag": "NORMAL",
    "dependence": {},
    "maxRetryTimes": "0",
    "retryInterval": "1",
    "timeout": {
        "strategy": "",
        "interval": null,
        "enable": false
    },
    "taskInstancePriority": "MEDIUM",
    "workerGroupId": -1,
    "preTasks": []
}

HTTP节点

根据配置调用 HTTP 请求。

节点定义结构如下:

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

数据示例:

{
    "type": "HTTP",
    "id": "tasks-31113",
    "name": "http节点",
    "params": {
        "localParams": [],
        "httpParams": [
            {
                "prop": "id",
                "httpParametersType": "PARAMETER",
                "value": "GRESFWW"
            }
        ],
        "url": "http://www.ysstech.com/",
        "httpMethod": "GET",
        "httpCheckCondition": "STATUS_CODE_DEFAULT",
        "condition": ""
    },
    "description": "",
    "runFlag": "NORMAL",
    "dependence": {},
    "maxRetryTimes": "0",
    "retryInterval": "1",
    "timeout": {
        "strategy": "",
        "interval": null,
        "enable": false
    },
    "taskInstancePriority": "MEDIUM",
    "workerGroupId": -1,
    "preTasks": []
}

子流程节点

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

节点定义结构如下:

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



16



数据示例:

{
    "type": "SUB_PROCESS",
    "id": "tasks-22568",
    "name": "子流程节点-task",
    "params": {
        "processDefinitionId": 2
    },
    "description": "",
    "runFlag": "NORMAL",
    "dependence": {},
    "timeout": {
        "strategy": "",
        "interval": null,
        "enable": false
    },
    "taskInstancePriority": "MEDIUM",
    "workerGroupId": -1,
    "preTasks": []
}

依赖(DEPENDENT)节点

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

节点定义结构如下:

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

数据示例:

{
    "type": "DEPENDENT",
    "id": "tasks-3383",
    "name": " 依赖(DEPENDENT)节点",
    "params": {},
    "description": "",
    "runFlag": "NORMAL",
    "dependence": {
        "relation": "AND",
        "dependTaskList": [
            {
                "relation": "AND",
                "dependItemList": [
                    {
                        "projectId": 2,
                        "definitionId": 3,
                        "definitionList": [
                            {
                                "value": 3,
                                "label": "子流程节点"
                            },
                            {
                                "value": 2,
                                "label": "shell-task"
                            }
                        ],
                        "depTasks": "ALL",
                        "cycle": "day",
                        "dateValue": "today"
                    }
                ]
            }
        ]
    },
    "maxRetryTimes": "0",
    "retryInterval": "1",
    "timeout": {
        "strategy": "",
        "interval": null,
        "enable": false
    },
    "taskInstancePriority": "MEDIUM",
    "workerGroupId": -1,
    "preTasks": []
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache DolphinScheduler是一个新一代分布式大数据工作流任务调度系统,致力于“解决大数据任务之间错综复杂的依赖关系,整个数据处理开箱即用”。它以 DAG(有向无环图) 的方式将任务连接起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及 Kill任务等操作。目前已经有像IBM、腾讯、美团、360等400多家公司生产上使用。 调度系统现在市面上的调度系统那么多,比如老牌的Airflow, Oozie,Kettle,xxl-job ,Spring Batch等等, 为什么要选DolphinSchedulerDolphinScheduler 的定位是大数据工作流调度。通过把大数据和工作流做了重点标注. 从而可以知道DolphinScheduler的定位是针对于大数据体系。 DolphinScheduler是非常强大的大数据调度工具,有以下一些特点:1、通过拖拽以DAG 图的方式将 Task 按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态;2、支持丰富的任务类型;3、支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill 任务等操作;4、支持工作流全局参数及节点自定义参数设置;5、支持集群HA,通过 Zookeeper实现 Master 集群和 Worker 集群去中心化;6、支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计;7、支持补数,并行或串行回填数据。课程会带大家构建DolphinScheduler大数据调度平台,实战讲解多种任务调度配置,会基于案例讲解DolphinScheduler使用,让大家在实战中掌握DolphinScheduler。 DolphinScheduler 发展很快 很多公司调度都切换到了DolphinScheduler,掌握DolphinScheduler调度使用势在必行,抓住新技术机遇,为跳巢涨薪做好准备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值