You need to enable JavaScript to run this app.
文档中心
大数据研发治理套件

大数据研发治理套件

复制全文
下载 pdf
调度与依赖
并发控制、重试
复制全文
下载 pdf
并发控制、重试

本文为您介绍如何在 Pipeline 中配置、使用并发控制、重试机制以及数据回溯操作。

并发控制

并发的含义

当同一条 Pipeline 在同一时间有多个实例需要运行时(如调度堆积、手动触发与自动调度并行、数据回溯批量生成),需要通过并发控制管理实例的同时执行数量。

并发配置

在 Pipeline 配置中通过 concurrency 字段设置:

spec:
  trigger:
    type: scheduled
    cronExpression:
      expression: "0 * * * *"     # 每小时
  concurrency: 3                   # 最多 3 个实例同时运行

配置项

说明

concurrency

允许同时运行的最大实例数(默认为 1)

并发运行机制

上游就绪检查通过
    --> 检查当前任务运行中的实例数是否达到并发数,若达到则继续等待并持续检查,若未达到则通过并发检查

并发配置建议

场景

推荐并发数

说明

核心 SLA 链路

1

严格串行,避免资源竞争和数据冲突。

一般日常 ETL

1–3

适度并行,平衡效率与资源占用。

数据回溯场景

3–5

提高回溯速度,按实际资源调整。

无状态计算

5–10

无数据依赖冲突时可放大并行。

自依赖 vs 并发控制

自依赖(dependsOn.self)和 concurrency: 1 都能实现串行执行,但机制不同:

对比维度

自依赖 (dependsOn.self)

并发控制 (concurrency: 1)

控制层级

依赖层(DAG 调度前)

执行层(实例排队)

上游失败影响

当天实例因依赖未满足而阻塞

上游失败后当天实例正常出队执行

适用场景

数据有严格先后依赖(增量处理)

仅控制资源并发,数据无先后关系

队列管理

无队列,实例在依赖阶段等待

有显式等待队列

重试机制

Activity 级别重试

当 Activity 执行失败时,系统可自动重试。重试在 Activity 级别配置,通过 retryPolicy 字段定义:

activities:
  - name: extract_orders
    type: sql
    engineType: emr_serverless_spark
    sqlScript: extract_orders.sql
    retryPolicy:
      maxRetries: 3                        # 最大重试次数
      minRetryIntervalSeconds: 60.         # 重试间隔(秒)
      timeoutSeconds: 3600                 # 单次执行超时(秒)
      retryOnTimeout: true                 # 超时是否触发重试

retryPolicy 字段说明

字段

类型

必填

默认值

说明

maxRetries

Integer

否

0

最大重试次数。0 表示不重试

minRetryIntervalSeconds

Integer

否

60

两次重试之间的最小间隔(秒)

timeoutSeconds

Integer

否

0

单次执行超时时间(秒)。0 表示不限制

retryOnTimeout

Boolean

否

false

超时后是否重试。为 true 时超时也触发重试

重试流程

Activity 执行
  → 执行成功 → SUCCEEDED
  → 执行失败(或超时)
    → 已重试次数 < maxRetries?
      → 是 → 等待 minRetryIntervalSeconds → 重新执行(状态标记为 RETRYING)
      → 否 → 标记为 FAILED → 根据 dependencyConditions 决定下游行为

重试策略建议

失败类型

推荐策略

说明

网络超时 / 资源不足

重试 2–3 次,间隔 60 秒

偶发问题通常重试可恢复

SQL 语法错误

不重试 (maxRetries: 0)

重试不会修复代码错误

上游数据延迟

重试 3–5 次,间隔 300 秒

等待上游数据就绪

外部 API 限流

重试 3 次,间隔 120 秒

等待限流窗口过去

超时控制

Activity 执行超时

通过 retryPolicy.timeoutSeconds 设置单次执行的超时时间:

retryPolicy:
  timeoutSeconds: 3600         # 1 小时超时
  retryOnTimeout: true         # 超时后重试
  maxRetries: 2

超时行为:

retryOnTimeout

超时后行为

true

终止当前执行 → 触发重试(受 maxRetries 限制)

false

终止当前执行 → 直接标记为 TIMEOUT

注意

retryPolicy.timeoutSeconds 是强制终止,与告警中的"执行超时"不同。告警的执行超时仅发送通知而不终止任务。

Pipeline 超时

Pipeline 级别没有单独的超时配置。Pipeline 的实际执行时间取决于所有 Activity 的执行时间之和(串行部分)和最长并行路径。
如需控制 Pipeline 整体完成时间,推荐使用告警中的"未按时完成"指标(参见监控规则配置),在预期时间前发出预警。

最近更新时间:2026.07.01 00:44:44
这个页面对您有帮助吗?
有用
有用
无用
无用