高级调度
提示:此产品模块属于增值模块(公测中),如需试用体验请联系观远数据商务人员或客户成功经理(通常是贵公司当前的服务交流负责人)。
1. 功能说明
高级调度模块通过可视化DAG,编排平台内任务间的依赖关系及运行顺序(包括ETL运行、数据集更新等任务),从而实现平台内任务的统一调度及运维管理。
对业务侧而言,各个数据开发任务存在运行先后顺序要求或数据依赖关系。高级调度模块可以确保按照用户配置的运行顺序及依赖条件,依次调起各任务运行,从而避免数据处理过程中的混乱和冲突,保证数据的一致性、正确性。同时,高级调度还提供了任务实例化运维的能力,帮助用户更好地追踪和管理平台内的各项任务。
2. 产品功能
产品功能 | 功能介绍 | 使用角色 |
工作流编排 | 九宫格-高级调度-新建工作流支持拖拽式引用任务,任务间通过连线连接,连线箭头方向代表任务运行顺序,连线上支持设置调度条件:成功调度/失败调度/顺序调度 | 数据开发者(工作流所有者) |
任务类型 | 可支持调度的任务类型,当前支持引用[智能ETL]([数据集]等任务的调度能力等在逐步拓展中)针对智能ETL,支持两种引用模式:1) 直接调度 2.替换输入/输出调度 | 数据开发者(工作流所有者) |
运行及调度设置 | 支持参数化运行支持手动/URL触发/定时等多种调度方式*事件调度(即勾选的数据集更新后触发)逐步拓展中 | 数据开发者(工作流所有者) |
工作流实例 | 每次运行工作流均会将当次运行配置实例化,通过工作流实例进行流程内各任务的运行状态及日志查看、运维(包括重新执行/停止/从失败处继续执行...)等操作 | 管理员、数据开发者(工作流所有者) |
3. 应用场景
4. 产品价值
1.提升任务运行效率及稳定性:
-
提供更优越的数据分析时效,支持直接增量更新目标数据集, ETL任务运行时间更短,资源占用更少,大数据量下表现更佳。
-
增量策略可靠,容错性强,保障更新过程中稳定的看数体验。
2.提供更完善的调度机制,满足复杂业务场景下的调度诉求,例如:
-
上下游ETL依赖相同输入,无法在输入数据集更新后发起ETL更新,而对上下游存在明显依赖的ETL来说,定时运行效率并不高,此时希望按顺序调度ETL任务。
-
需要动态传入参数进行数据筛选,按需分批进行数据加工。
-
根据实际业务需求控制任务并行及串行排队策略,避免大量任务在同一时间段运行,同时运行完成后立即触发下游,有效利用系统资源。
3.建立全局运维视图,进行运维提效:
- 提升平台内任务的依赖编排及可运维能力,多个存在依赖关系的任务通过工作流统一管理,无需逐个配置更新逻辑,整体运维链路更加清晰。
5. 使用说明
5.1. 新建工作流
我们将每个高级调度任务定义为一个“工作流”,通过新建工作流创建一个全新的调度流程。
功能入口:
九宫格-高级调度-新建工作流
5.1.1. 基础功能
进入工作流编辑页面后,功能分布如上图所示。
5.1.2. 配置工作流名称及描述
单击工作流名称部分,进行名称及描述信息配置。
5.1.3. 节点配置
将左侧操作栏中的任务类型算子拖入工作区,即可生成一个独立的任务节点,单击节点后,页面下方将出现该节点的待配置项,包括:
-
基本设置:配置当前节点的基础信息,例如名称、描述等
-
节点配置:配置当前节点需引用的具体任务,及任务的各项属性信息
-
运行选项:运行配置,如超时限制、失败重试策略等
具体配置项根据任务类型而有所差异,下文将详细解释各个任务类型算子的配置流程(MVP版本支持调度[智能ETL]任务,更多任务类型持续扩展中)。
5.1.3.1. 智能ETL
1.基本设置
为当前的任务节点填写基本信息(非必填),在输入框中填写节点名称、描述,这些信息可以帮助您更好地理解和管理节点,使整个高级调度任务的流程更加清晰和易于维护。
2.节点配置
1)选择需要调度的智能ETL
-
支持查看/替换节点中的ETL:
-
查看ETL:点击"智能ETL"中的任务名后,跳转至ETL任务页。
-
替换ETL:点击"智能ETL"右侧的[替换]按钮,重新指定ETL作为工作流的任务节点。
-
提示:
-
需确保ETL所有者与当前工作流的所有者一致、且未被其他工作流引用时,方可进行选择/替换。
-
如工作流所有者为普通用户,在选择ETL弹窗中展示的ETL即是该用户具备所有者权限的ETL。
-
如工作流所有者为管理员(或管理员去编辑所有者为普通用户的工作流),当前选择ETL弹窗中仍会展示全量ETL,此时需选择工作流所有者具备所有者权限的ETL。
通过工作流中引用ETL后,该ETL原更新策略将自动失效,并更改为[跟随工作流更新]。
-
2)输入/输出配置
选择ETL后,平台将自动解析并展示ETL的输入数据集及输出数据集列表,并可基于业务场景需要,对原ETL的输入/输出进行数据筛选/替换等操作。
- 输入配置
节点输入数据集:通过工作流运行当前ETL时,实际传入的输入数据。默认情况下,节点输入数据集即为ETL的原输入数据集。
如需对节点输入数据集进行替换,或按需进行数据筛选:单击输入-修改按钮:
-
替换:替换节点输入数据集,可替换范围为当前工作流所有者具备所有者/使用者权限的所有Guan-index类型数据集(与ETL输入数据集可选择范围相同)。
-
编辑规则:通过筛选条件对当前数据集进行过滤,支持引用工作流参数(详见本文5.1.4)、时间宏。
- 输出配置
节点输出数据集:通过工作流运行当前ETL时,实际存储运行结果数据的数据集。
默认情况下(即不开启输入替换时),节点输出数据集即为ETL的原输出数据集,运行ETL时,数据将直接写入到ETL默认输出数据集中。
如需对输出数据集做增量更新,或保证数据结构不变的情况下进行全量更新,需勾选[输出替换],并进行待替换的输出数据集配置:
开启[输出替换]后,ETL运行产生的数据将按照[输出替换]配置,以增量/全量的方式输出至替换后的高级调度数据集中(原ETL输出数据集将不再执行数据写入)。
[输出替换]配置:
-
选择目标输出数据集:
-
注册数据:目标输出数据集不存在时,选择注册数据模式,填写数据集名称、存储路径、主键(选填)等信息,新建高级调度数据集后,后续将执行更新数据逻辑。
-
-
更新数据:目标输出数据集存在时,选择更新数据模式、,直接引用待替换的目标数据集,并对数据集进行更新。
- 支持[字段映射],对ETL的输出字段与目标数据集字段进行同名映射,并对字段映射进行修改。
- 输出可选择数据集范围:工作流所有者具备所有者权限的[高级调度]类型数据集。
后续更新方式:在选择或创建节点输出数据集后,后续对该数据集的更新方式。
-
全量更新:清空目标数据集历史数据后进行写入
-
增量更新:保留目标数据集已有数据再写入
-
若数据集设置了主键,写入时将会根据主键进行去重
-
支持配置[前置清理规则],在数据写入前,按照前置清理规则清理数据后,再执行增量更新。
-
3)运行选项
根据任务的复杂性和运行环境的实际情况,选择合适的"运行标志"和"任务算子ETL节点运行的超时限制"可以提高任务的执行效率和可靠性。
-
运行标志:根据调度需求设置对应节点在运行时的执行策略:
-
禁止执行:工作流运行至该节点后将直接跳过执行,常用于临时数据问题排查、部分任务运行控制等场景。
-
正常:按照既有调度策略运行该节点,节点默认运行标志。
超时设置:支持自定义超时时间/跟随全局超时时间,若在设定时间内ETL未运行完成,将自动进行kill,避免长时间占用任务队列或计算资源,阻塞其他任务的正常运行。
-
5.1.3.2. 数据集
1.基本配置
在任务类型中拖拽【数据集】节点后,单击节点即可为当前的任务节点进行配置。基本配置包含节点名称和描述,清晰的基本信息配置在未来工作流管理过程中更快的查找和理解节点用途。
2.节点配置
- 选择需要调度更新的数据集
-
数据集选择后,支持查看/替换节点中的数据集:
-
查看数据集:点击数据集名称,跳转至数据集概览页。
-
替换数据集:点击"数据集"右侧的[替换]按钮,重新指定数据集作为工作流的调度对象。
-
提示:
-
需确保工作流所有者具备目标数据集的所有者权限、且目标数据集未被其他工作流引用时,方可进行选择/替换。
-
数据集算子配置完成后,可通过连线关系进行任务运行顺序编排,同样支持成功、失败、顺序调度;
-
工作流运行时,当[数据集]节点前置依赖条件满足或无依赖条件时,运行该节点,运行时将调起被引用的数据集更新,更新逻辑等同于URL触发更新逻辑:
-
如开启增量更新,则按照前置清理规则及增量更新SQL进行前置数据清理及数据追加;
-
如未开启增量更新,则按照模型结构SQL进行全量更新;
通过工作流中引用数据集并保存后,该数据集原更新策略将自动失效,并更改为[跟随工作流更新]。
-
3. 运行选项
-
运行标志
-
禁止执行:工作流运行至该节点后将直接跳过执行,常用于临时数据问题排查、部分任务运行控制等场景。
-
正常:按照既有调度策略运行该节点,节点默认运行标志。
失败重试:与数据集自身配置的失败重试策略保持同步
-
5.1.4. 工作流参数
支持按照实际业务需要创建工作流参数,其作用域为当前工作流。当工作流执行时,参数将被动态地替换为其对应的值,并在数据筛选等环节生效。
1.工作流参数定义
单击[参数列表]-设置,进行工作流参数的新增/修改/删除。
-
名称(必填项):工作流参数名称,支持输入中文/数字/字母/下划线(不允许为空),参数名称不允许重复。
-
类型(必填):工作流参数存储类型,支持选择文本、数值、日期三种类型。
-
值(非必填):工作流参数默认值,可在运行时动态指定。
-
描述(非必填):用于解释当前工作流参数的用法等。
2.引用工作流参数
工作流参数引用方式:[DYNAMIC_PARAMS.参数名称],未动态传入参数值时,取工作流参数中定义的默认值。
*当前主要支持在智能ETL节点-输入数据集-编辑规则时,使用工作流参数进行数据筛选。
5.1.5. 任务编排
任务编排是指根据业务需求,将业务场景内涉及到的各项任务按照其运行顺序及依赖关系进行编排的过程。
在高级调度任务编排中,连线用于连接不同的任务节点,以定义它们之间的执行顺序和调度逻辑。连线箭头方向表示任务的运行顺序,连线样式表示上下游的调度关系,目前支持成功调度、失败调度、顺序调度三种调度关系,整体运行逻辑说明:
成功调度:上游运行完成且运行结果为“成功”时,立即调起下游任务运行,如运行结果为失败等,则下游任务均不执行。
失败调度:上游运行完成且运行结果为“失败”时,立即调起下游任务运行,如运行结果为成功等,则下游任务均不执行。
顺序调度:上游运行完成后,无论其运行结果为成功/失败等,均会立即调起下游任务运行。
如下游任务存在多个上游依赖,则所有上游依赖的调度关系均满足后,方可调起下游任务运行。
若任务不存在上游依赖,则在工作流运行后,第一时间调起该任务的运行。
5.1.6. 工作流运行
工作流任务配置完成并保存后,可通过手动/平台调度/URL触发的方式运行工作流,用户可指定对应运行方式下的运行参数值,若未指定,则使用参数默认值。
手动运行入口:
-
工作流编辑页-保存运行并退出
-
工作流详情页-更多操作-运行
-
工作流列表页-操作-运行
调度运行入口:
支持[定时调度]:按照每天/每周/每月/每年配置定时策略,开启定时调度后,系统将在用户指定的时间点,按照指定的工作流参数值,自动调起工作流运行。
支持[事件调度]:配置及运行机制等同于ETL中的[勾选的数据集更新后]。
-
选择事件调度后,自动获取工作流中源头ETL(即在工作流中无调度依赖,首批运行的ETL)中的所有输入数据集。(如进行了输入替换,则获取并显示节点配置中替换后的数据集)
-
勾选工作流更新需要依赖的数据集,并设置其触发条件;
-
当勾选的数据集更新后,判断目标工作流运行条件是否满足,如符合,则自动调起工作流运行。
-
判断逻辑:
-
触发条件为[任何一个勾选的数据集更新后都会触发]:
-
接收到勾选数据集的更新事件后,调起工作流运行;
-
运行条件再次满足后,可重新发起工作流运行;
触发条件为[所有勾选的数据集都更新后触发]:
-
所有勾选的数据集均更新后,调起工作流运行:
-
运行条件再次满足后,可重新发起工作流运行;
-
-
5.2. 工作流列表
工作流列表主要用于查看已创建的高级调度任务及基本信息(包括工作流名称、描述、创建者、创建时间等),并对工作流进行集中管理,支持新建、编辑、删除工作流等管理操作。
5.2.1. 查看工作流
单击工作流列表中的目标工作流,进入工作流详情页,该页面主要用于展示目标工作流的详情信息同时支持权限管理、调度设置等工作流属性配置。
权限管理:查看/管理工作流所有者及访问者。
调度设置:支持修改调度状态、定时调度策略、调度参数等信息。
5.2.2. 编辑工作流
对已存在的工作流进行修改,点击[编辑]按钮后, 跳转至工作流编辑页面。
5.2.3. 运行工作流
执行一个已创建的工作流。每次运行工作流,将对应生成一个工作流实例,用于本次运行的工作流内各项任务的状态查看及运维管理。
(工作流实例介绍,详见本文5.3章节)
5.2.4. 重命名
重命名工作流,同路径下工作流不可重名。(当前仅支持根目录)
5.2.5. 删除
删除已创建的工作流,删除后,工作流内引用的任务将恢复为手动运行,并支持被其他工作流引用。
5.3. 工作流实例
工作流实例是指在工作流运行时产生的一个特定工作流程的实例化对象。每运行一个工作流,都将记录当次运行的各项配置信息,并生成一个工作流实例。
通过工作流实例,可查看工作流本次运行的基本信息包括:开始时间、结束时间、运行状态,以及每个任务的执行状态和执行结果等。另外,可通过实例对本次运行的任务进行相关的运维管理,包括:重新执行/从失败处继续执行/停止/删除实例等。从而实现对各项任务的整体运行监控及统一化运维管理。
5.3.1. 实例详情
5.3.1.1. 实例状态
单击列表进入实例详情页,通过实例详情页查看本次运行的参数值、各任务的运行状态、运行日志、上下游运行关系等。
5.3.1.2. 甘特图
通过甘特图,查看工作流实例中各个任务的运行时长及运行状态、排队时间等,用于排查异常运行情况。
5.3.2. 实例管理
目前支持对工作流实例进行管理,包括"重新执行"、"从失败处继续执行"、"停止"等运维管理操作。
5.3.2.1. 重新执行
按照已生成的工作流实例配置,重新运行该实例。
5.3.2.2. 从失败处继续执行
重新执行失败任务及其下游任务,而不需要重新执行整个工作流。通常用于处理任务执行过程中由于网络原因导致的响应超时或连接失败等问题,可提升问题处理的效率。
5.3.2.3. 停止
停止正在执行中的工作流。
5.3.2.4. 删除
删除已经生成的工作流实例,操作不可逆。