调度策略定义了任务实例的生成方式、运行行为、异常容错机制以及所需的运行资源。通过合理配置调度策略,可精确控制实例的生成时机、执行逻辑、失败恢复机制以及资源分配,以保障数据开发与运维的稳定运行。
调度策略功能介绍
DataWorks调度策略用于精确定义周期任务的自动化行为,主要包括四个方面:
实例生成与执行
控制实例何时生成(次日或即时生效)以及如何运行(正常、暂停、空跑)。容错与重试
配置任务的异常处理逻辑,包括运行超时、失败自动重跑及手动重跑权限,以提升稳定性。资源与环境
指定任务所需的计算资源、调度资源组和自定义镜像,实现资源隔离与环境统一。并发控制
通过设置最大并行实例数,管理同一任务的并发执行,防止资源超载。
配置调度策略
配置实例生成与执行行为
定义任务实例的生成与执行行为,决定了实例何时被创建、以何种方式运行。
实例生成方式
定义任务发布后,周期实例的生成时机。该配置决定了变更是当天生效还是次日生效。
调度策略的配置范围因节点组织形式而异:
工作流节点:实例生成方式由工作流统一管理,节点自身不可单独配置。其他调度参数可由节点独立设置。
独立节点:所有调度策略参数均可独立配置。
实例生成方式 | 说明 |
T+1次日生成(推荐) | 变更于次日生效,不影响当天已生成的实例。
说明 若修改调度时间,选择此项并发布后,近两天(T和T-1)已生成的实例(包括已完成和未运行的)的定时时间将更新为新配置的时间。未生成的未来实例将按新时间生成。 |
发布后即时生成 | 变更发布后立即生效,并重新生成当日实例。若定时时间早于发布时刻不足 10 分钟,新生成的实例将自动空跑(直接置为成功,不实际执行)。
|
若选择发布后即时生成,为确保实例正常运行而非空跑,需确保任务的定时调度时间晚于任务发布时间至少 10 分钟。
无论选择何种方式,在
23:30~24:00期间的发布操作,其变更将在第三日生效。建议避免在此时间段发布任务。
调度类型
定义实例在到达定时时间后的具体执行行为。
调度类型 | 说明 | 使用场景 |
正常调度 | 实例正常执行代码,成功后触发下游任务。 | 适用于所有需要按周期运行的常规任务。 |
暂停调度 | 实例到达定时时间后不运行并置为失败状态,会阻塞下游依赖。在运维中心,该节点会显示冻结图标。 | 适用于需要临时中断或下线某个业务流程的场景,可用于紧急切断数据链路。 |
空跑调度 | 实例到达定时时间后直接置为成功(执行时长为 | 适用于某个节点暂时无需执行,但需正常触发其下游任务的场景。 |
延时执行时间(仅适用于工作流节点)
设置节点在工作流开始执行后,延迟指定时间再开始运行。
示例:某工作流的定时时间为 09:00,其中一个节点配置了 5 分钟的延时执行。该节点将在 09:05 左右开始执行。
配置容错与重试策略
定义任务在遇到运行失败或卡死等异常时的应对策略。
超时定义
设置任务运行的最长允许时间。若运行时长超过该阈值,任务将被强制终止并置为失败,以防任务长时间卡死而阻塞整个工作流。
系统默认:默认为 3~7 天,由系统根据当前负载动态调整。
自定义:可设置 1 分钟到 168 小时(7 天)之间的任意超时时长。
超时定义对周期实例、补数据实例和测试实例均生效。
重跑属性
定义任务在运行结束后是否允许被手动重跑。此配置用于故障恢复,并可避免因误操作重跑而引发数据质量问题。
重跑属性 | 说明与适用场景 |
运行成功或失败后皆可重跑 | 适用于可重复执行且不影响最终结果的幂等任务。 |
运行成功后不可重跑,运行失败后可以重跑 | (推荐)适用于成功后重跑会产生副作用(如重复插入数据)的任务。此设置可防止因误操作重跑成功任务而导致数据污染。 |
运行成功或失败后皆不可重跑 | 适用于严格的非幂等任务(如某些一次性数据同步场景)。选择此项后,失败自动重跑功能将无法开启。 |
为确保数据可恢复性,建议保证任务逻辑的幂等性。例如,在 ODPS SQL 任务中,应优先使用 INSERT OVERWRITE(覆盖写入)而非 INSERT INTO(追加写入),以确保多次重跑结果一致。
失败自动重跑
开启后,当任务因网络抖动等临时性问题运行失败时,系统将自动尝试重跑,无需人工干预。
参数 | 说明 |
重跑次数 | 失败后自动重试的次数。取值范围:1~10 次。 |
重跑间隔 | 每次重试之间的等待时间。取值范围:1~30 分钟。 |
因运行超时而导致的失败,不会触发自动重跑机制。
配置运行环境与资源
配置任务执行时所需的计算资源、依赖环境与外部数据。
计算资源与配额
计算资源管理参见:计算资源管理。
计算资源是指配置实际执行数据处理任务、具备计算能力的计算引擎实例。如MaxCompute项目、Hologres实例、AnalyticDB、ClickHouse等。
其中MaxCompute计算资源,可在其控制台通过计算配额机制隔离与分配计算资源。例如,为关键业务创建独立配额组,并设置CPU、内存、并发等上限,以避免资源争抢影响核心任务。
资源组
资源组管理参见:资源组管理。
DataWorks中的所有周期任务都需要通过资源组来调度运行。根据任务执行时是否消耗DataWorks自身的计算单元(CU),任务可分为两类:
任务类型 | 核心职责 | CU消耗 | 任务列表 |
调度型任务 | 仅负责触发和监控外部计算引擎(如MaxCompute、Hologres)中的计算。 | 不消耗 | |
计算型任务 | 任务代码直接在DataWorks的资源组内执行,完成计算。 | 消耗 |
在调度配置的资源属性中,从调度资源组下拉列表中选择一个资源组,推荐使用更通用,支持弹性伸缩和灵活付费的Serverless资源组。
重要需确保所选资源组与任务所需访问的数据源、计算资源之间网络连通,否则任务将运行失败。网络连通配置参见网络连通配置。
如果任务是计算型任务,且上一步中选择的是Serverless资源组,则需配置调度CU。根据任务的计算复杂度和性能要求,设置运行时所需的CU数量(例如:0.25 CU、1 CU、4 CU)。
镜像
自定义镜像管理参见:自定义镜像。
为特定节点类型(如 Python、Shell)选择自定义运行镜像。通过自定义镜像,可预置业务所需的第三方依赖库和工具,为任务提供统一、完整的执行环境。
数据集
数据集管理参见:管理数据集
为特定节点类型(如 Shell)挂载外部存储(如对象存储(OSS)或文件存储(NAS)),使其在代码中可作为本地文件进行读取。每个节点最多可挂载 5 个数据集。
支持配置挂载路径、高级配置(如读取方法)以及只读权限。配置数据集的方法见:管理数据集。
配置并发控制
管理同一任务的多个实例同时运行的行为,防止资源争抢或业务逻辑冲突。
最大并行实例数
限制同一任务在同一时间可运行的最大实例数量。
不限制:默认选项,不对该任务的并行实例数进行限制。
限制:开启后,可设置最大并行数(取值范围:1~10000)。当正在运行的实例数达到上限时,新生成的实例将进入排队状态,等待已有实例运行结束后再依次执行。
计费说明
调度型任务:仅负责触发外部计算引擎,不消耗DataWorks的计算单元(CU)。
计算型任务:若在DataWorks的资源组(包括默认资源组和Serverless资源组)中执行,会消耗CU并产生费用。
使用Serverless资源组时,需根据任务需求配置调度CU规格,费用与CU使用量和时长相关。
底层计算资源费用:调度策略仅涉及DataWorks层面的资源调度。任务实际运行时所使用的底层计算资源(如MaxCompute、Hologres等)独立计费。详情参见相应产品的计费文档。