更新时间:2024-10-18 GMT+08:00

调度作业

对已编排好的作业设置调度方式。

  • 如果您的作业是批处理作业,您可以配置作业级别的调度任务,即以作业为一个整体进行调度,支持单次调度、周期调度、事件驱动调度三种调度方式。具体请参见配置作业调度任务(批处理作业)
  • 如果您的作业是实时处理作业,您可以配置节点级别的调度任务,即每一个节点可以独立调度,支持单次调度、周期调度、事件驱动调度三种调度方式。具体请参见配置节点调度任务(实时作业)

前提条件

约束限制

  • 调度周期需要合理设置,单个作业最多允许5个实例并行执行,如果作业实际执行时间大于作业配置的调度周期,会导致后面批次的作业实例堆积,从而出现计划时间和开始时间相差大。例如CDM、ETL作业的调度周期至少应在5分钟以上,并根据作业表的数据量、源端表更新频次等调整。
  • 如果通过DataArts Studio数据开发调度CDM迁移作业,CDM迁移作业处也配置了定时任务,则两种调度均会生效。为了业务运行逻辑统一和避免调度冲突,推荐您启用数据开发调度即可,无需配置CDM定时任务。

配置作业调度任务(批处理作业)

配置批处理作业的作业调度任务,支持单次调度、周期调度、事件驱动调度三种方式。操作方法如下:

单击画布右侧“调度配置”页签,展开配置页面,配置如表1所示的参数。

表1 作业调度配置

参数

说明

调度方式

选择作业的调度方式:

  • 单次调度:手动触发作业单次运行。
  • 周期调度:周期性自动运行作业,参数说明请参见表2
    • 需要人工确认才执行:勾选后,需要人工确认执行后,作业实例才能够运行。如果不进行人工确认,影响后续作业实例执行。
      说明:

      作业实例运行场景下,在实例监控页面,作业实例运行状态显示为“待确认执行”,可以进行手动确认执行,单击“确认执行”后,作业实例运行状态显示为“等待运行”。

      重跑实例时,作业实例运行状态显示为“待确认执行”,可以进行手动确认执行,单击“确认执行”后,作业实例运行状态显示为“等待运行”。

      补数据场景下,在补数据监控页面,补数据作业实例运行状态显示为“待确认执行”,可以在实例监控页面进行手动确认执行,单击“确认执行”后,补数据作业实例运行状态显示为“等待运行”。

      批作业监控场景下,在批作业监控页面,作业实例运行状态显示为“待确认执行”,可以进行手动确认执行,单击“确认执行”后,作业实例运行状态显示为“等待运行”。

  • 事件驱动调度:根据外部条件触发作业运行,参数说明请参见表3。具体使用教程可参见跨空间进行作业调度

是否空跑

如果勾选了空跑,任务不会实际执行,将直接返回成功。

任务组

选择已配置好的任务组。配置方法请参见配置任务组

系统默认“不选择任务组”。

任务组配置好后,可以更细粒度的进行当前任务组中的作业节点的并发数控制,比如作业中包含多个节点、补数据、重跑等场景。

举例1:任务组里面最大并发数配置为2,作业节点有5个,当作业运行时,只有两个节点在运行中,其它节点在等待运行。

举例2:任务组里面最大并发数配置为2,补数据的并发周期数设置为5,当作业进行补数据时,有两个补数据生成的作业实例在运行中,其它的在等待运行。等待运行的实例,一段时间后,可以正常下发。

举例3:如果多个作业配置同一个任务组,任务组里面最大并发数配置为2,只有两个作业是运行中,其他作业在等待执行。如果多个作业节点上配置了任务组,任务组里面最大并发数配置为2,作业节点总共有5个,根据作业调度时间,只有两个节点在运行中,其它节点在等待运行。

说明:

对于Pipeline作业,每个节点都可以配置一个任务组,也可以在作业里面统一配置任务组,如果配置了作业级用户组,则优先级高于节点的任务组。

表2 “周期调度”的参数配置

参数

说明

生效时间

调度任务的生效时间段。

系统支持生效时间可以快速选到今天和明天。单击生效时间的时间框,在时间框界面单击“今天”或“明天”,可以快速选择当前日期。

调度周期

选择调度任务的执行周期,并配置相关参数。

调度周期需要合理设置,单个作业最多允许5个实例并行执行,如果作业实际执行时间大于作业配置的调度周期,会导致后面批次的作业实例堆积,从而出现计划时间和开始时间相差大。例如CDM、ETL作业的调度周期至少应在5分钟以上,并根据作业表的数据量、源端表更新频次等调整。

已经在运行中的作业,可以修改其调度周期。

  • 分钟:支持在小时整点开始调度运行,调度周期可按间隔时间配置为分钟级别,在当天结束时间结束调度后第二天再自动开始调度。
    说明:

    调度周期选择“分钟”时,系统不支持按照配置的时间间隔固定频率去运行,即不支持跨小时按照固定频率去运行。举例如下:

    • 2024年6月19日14点20分配置了分钟调度,开始时间为0时30分,间隔时间为30分钟,结束时间为23时59分,则实际作业运行时间周期为2024-06-19 14:30:00、2024-06-19 15:30:00、2024-06-19 16:30:00、2024-06-19 17:30:00、2024-06-18 18:30:00等。
    • 2024年6月19日14点20分配置了分钟调度,开始时间为0时0分,间隔时间为50分钟,结束时间为23时59分,则实际作业运行时间周期为2024-06-19 14:50:00、2024-06-19 15:00:00、2024-06-19 15:50:00、2024-06-19 16:00:00、2024-06-19 16:50:00、2024-06-19 17:00:00、2024-06-19 17:50:00等。
  • 小时:支持按间隔小时配置调度周期,在某一时刻开始调度运行,调度周期可按间隔时间配置为小时级别,在当天结束时间结束调度后第二天再自动开始调度。同时支持按离散小时进行调度周期配置,可以指定一天内的任意小时和分钟进行调度,离散小时调度仅支持自然周期调度。
  • 天:支持在某天的某一时刻开始调度运行,调度周期为1天。
  • 周:支持在一周中选择一天或多天的某一时刻开始调度运行。
  • 月:支持在一月中选择一天或多天的某一时刻开始调度运行。同时系统支持可以选择“每月最后一天”进行业务调度。
说明:

因为DataArts Studio不支持底层服务(例如,以前的CDM、DLI等服务)的补数据实例和周期调度作业实例并发运行,为了保证补数据实例不影响周期调度作业实例运行,两种类型作业实例不会抢占并发,所以,作业的周期调度的日期与该作业补数据的业务日期不能重合,周期调度和补数据不能同时运行,避免出现运行异常问题。

调度日历

根据已配置的日历信息,选择所需的调度日历。系统默认不使用调度日历。配置调度日历的操作请参见配置调度日历

  • 使用按日历进行自定义工作日期进行周期调度,如果非工作日,作业会进行空跑。例如作业周期调度、补数据。
  • 配置好的调度日历,如果工作日期进行变更,已经在执行的作业实例无法生效,还没生成的作业实例可以立即生效。

监听OBS

打开监听OBS开关后,系统会自动监听OBS路径是否有新作业文件。关闭开关后不再监听OBS路径。

配置参数如下:

  • OBS文件,支持EL表达式。
  • 监听间隔,可设置为1-60之间,单位为分钟。
  • 超时时间,可设置为1-1440之间,单位为分钟。

依赖作业

此处可以选择不同工作空间的周期调度作业作为依赖作业,则仅当依赖的作业运行完成时,才开始执行当前作业。支持单击“自动解析依赖”对作业依赖关系进行自动识别。

说明:

跨工作空间的作业依赖规则,请参见作业依赖规则

数据开发当前支持两种调度依赖策略:传统周期调度依赖和自然周期调度依赖。这两种周期调度依赖只能选择其中一种。对于新的应用实例而言,默认使用自然周期调度作为DataArts Studio新实例默认选项。

图1 传统周期调度作业依赖关系全景图
图2 自然周期调度作业依赖关系全景图

关于设置依赖作业的条件,以及设置依赖作业后的作业运行原理请参见周期调度依赖策略

依赖的作业失败后,当前作业处理策略

当依赖的作业在当前作业周期内存在运行失败实例后,选择当前作业的处理策略:

  • 等待执行

    等待执行当前作业,等待执行的作业会阻塞后续作业的执行。您可以手动将依赖的作业强制成功,解决阻塞问题。

  • 继续执行

    继续执行当前作业

  • 取消执行

    取消执行当前作业,当前作业的状态为“取消”

例如,当前作业调度周期为1小时, 依赖作业调度周期为5分钟。
  • 如果当前参数配置的是取消执行,依赖的作业12个实例中只要有一个失败的,当前作业就取消执行。
  • 如果当前参数配置的是继续执行,只要依赖的作业12个实例跑完了,当前作业就继续执行。
    说明:

    依赖的作业失败后,当前作业处理策略可通过配置默认项进行批量设置,无需每个作业单独设置。具体请参见配置默认项。该配置仅对新建作业有效。

等待依赖作业的上一周期结束,才能运行

作业依赖其他作业时,默认情况下等待某时间区间内是否有依赖的作业实例运行完成,然后才执行当前作业。如果依赖的作业实例未成功运行结束,则当前作业为等待运行状态。

当勾选此选项后,检查此时间区间的上一周期区间内是否有作业实例运行完,然后再执行当前作业

配置作业依赖时,可以对所依赖的作业是否在调度中进行过滤

配置作业依赖关系时,可以对所依赖的作业是否在调度中进行过滤,避免上游依赖的作业未开始调度,从而导致下游作业失败。

  • 全部作业
  • 调度中的作业

配置作业依赖时,支持选择依赖周期

  • 同周期
  • 上N周期,输入值必须在1到30之间。

跨周期依赖

选择作业实例之间的依赖关系。

  • 不依赖上一调度周期。此处可以配置并发数,表示多个作业实例并行执行的个数。如果并发数配置为1,前一个批次执行完成后(包括成功、取消、或失败),下一批次才开始执行。
  • 自依赖(上一调度周期的作业实例执行成功下一周期才会执行,否则处于等待运行状态。等待上一调度周期结束才能继续运行)。
  • 跳过等待的实例,运行最近的批次(如果勾选该参数,跳过的作业实例将被置为取消状态且不再执行,当单作业实例执行时间过长时,可能会造成后续多批次作业全部被跳过。当作业实例需要持续执行时,强行跳过可能会造成业务逻辑错误,如当输出为分区表时,跳过冗余作业实例可能会造成“分区空洞”,建议谨慎配置此选项)。
    说明:
    • “跳过等待的实例,运行最近的批次”当前只支持分钟或小时调度的作业实例跳过。
    • 作业并发数配置比较低,实例未生成情况下,阻塞实例不会跳过。
    • 小周期依赖大周期时,可能会存在部分实例没有跳过,仍然执行。

是否清理超期等待运行的作业实例

  • 不清理
  • 清理

    若不配置该参数,默认会按照空间级配置来清理超期的等待运行作业实例。用户可根据实际场景设置清理或者不清理等待运行的作业实例。

是否空跑

如果勾选了空跑,任务不会实际执行,将直接返回成功。

任务组

选择已配置好的任务组。配置方法请参见配置任务组

系统默认“不选择任务组”。

任务组配置好后,可以更细粒度的进行当前任务组中的作业节点的并发数控制,比如作业中包含多个节点、补数据、重跑等场景。

说明:

对于Pipeline作业,每个节点都可以配置一个任务组,也可以在作业里面统一配置任务组,如果配置了作业级用户组,则优先级高于节点的任务组。

表3 “事件驱动调度”的参数配置

参数

说明

触发事件类型

选择触发作业运行的事件类型。

  • “DIS”
  • “KAFKA”

“DIS”触发事件类型的参数

DIS通道名称

选择DIS通道,当指定的DIS通道有新消息时,数据开发模块将新消息传递给作业,触发该作业运行。

事件处理并发数

选择作业并行处理的数量,最大并发数为128。

事件检测间隔

配置时间间隔,检测DIS通道下是否有新的消息。时间间隔单位可以配置为秒或分钟。

读取策略

选择数据的读取位置:

  • 从上次位置读取:首次启动时,从最新的位置读取数据。后续启动时,则从前一次记录的位置读取数据。
  • 从最新位置读取:每次启动都会从最新的位置读取数据。

失败策略

选择调度失败后的策略:

  • 挂起
  • 忽略失败,读取下一个事件

是否空跑

如果勾选了空跑,任务不会实际执行,将直接返回成功。

任务组

选择已配置好的任务组。配置方法请参见配置任务组

系统默认“不选择任务组”。

任务组配置好后,可以更细粒度的进行当前任务组中的作业节点的并发数控制,比如作业中包含多个节点、补数据、重跑等场景。

说明:

对于Pipeline作业,每个节点都可以配置一个任务组,也可以在作业里面统一配置任务组,如果配置了作业级用户组,则优先级高于节点的任务组。

“KAFKA”触发事件类型的参数

连接名称

选择数据连接,需先在“管理中心”创建kafka数据连接。

Topic

选择需要发往kafka的消息Topic。

事件处理并发数

选择作业并行处理的数量,最大并发数为128。

事件检测间隔

配置时间间隔,检测通道下是否有新的消息。时间间隔单位可以配置为秒或分钟。

读取策略

选择数据的读取位置:

  • 从上次位置读取:首次启动时,从最新的位置读取数据。后续启动时,则从前一次记录的位置读取数据。
  • 从最新位置读取:每次启动都会从最新的位置读取数据。

失败策略

选择调度失败后的策略:

  • 挂起
  • 忽略失败,读取下一个事件

是否空跑

如果勾选了空跑,任务不会实际执行,将直接返回成功。

任务组

选择已配置好的任务组。配置方法请参见配置任务组

系统默认“不选择任务组”。

任务组配置好后,可以更细粒度的进行当前任务组中的作业节点的并发数控制,比如作业中包含多个节点、补数据、重跑等场景。

说明:

对于Pipeline作业,每个节点都可以配置一个任务组,也可以在作业里面统一配置任务组,如果配置了作业级用户组,则优先级高于节点的任务组。

是否空跑

如果勾选了空跑,任务不会实际执行,将直接返回成功。

任务组

选择已配置好的任务组。配置方法请参见配置任务组

系统默认“不选择任务组”。

任务组配置好后,可以更细粒度的进行当前任务组中的作业节点的并发数控制,比如作业中包含多个节点、补数据、重跑等场景。

说明:

对于Pipeline作业,每个节点都可以配置一个任务组,也可以在作业里面统一配置任务组,如果配置了作业级用户组,则优先级高于节点的任务组。

配置节点调度任务(实时作业)

配置实时处理作业的节点调度任务,支持单次调度、周期调度、事件驱动调度三种方式。操作方法如下:

单击画布中的节点,在右侧显示“调度配置”页签,单击此页签,展开配置页面,配置如表4所示的参数。

表4 节点调度配置

参数

说明

调度方式

选择作业的调度方式:

  • 单次调度:手动触发作业单次运行。
  • 周期调度:周期性自动运行作业
  • 事件驱动调度:根据外部条件触发作业运行。

“周期调度”的参数

生效时间

调度任务的生效时间段。

调度周期

选择调度任务的执行周期,并配置相关参数:

  • 分钟
  • 小时

调度周期需要合理设置,如CDM、ETL作业的调度周期至少应在5分钟以上,并根据作业表的数据量、源端表更新频次等调整。

已经在运行中的作业,可以修改其调度周期。

跨周期依赖

选择作业下实例之间的依赖关系。

  • 不依赖上一调度周期

    选择“并发数”。多个作业实例并行执行的个数。如果并发数配置为1,前一个批次执行完成后(包括成功、取消、或失败),下一批次才开始执行。

  • 自依赖(上一调度周期的作业实例执行成功下一周期才会执行,否则处于等待运行状态。)

“事件驱动调度”的参数

触发事件类型

选择触发作业运行的事件类型。

DIS通道名称

选择DIS通道,当指定的DIS通道有新消息时,数据开发模块将新消息传递给作业,触发该作业运行。

当“触发事件类型”选择“DIS”时才需要配置。

连接名称

选择数据连接,需先在“管理中心”创建kafka数据连接。当“触发事件类型”选择“KAFKA”时才需要配置。

Topic

选择需要发往kafka的消息Topic。当“触发事件类型”选择“KAFKA”时才需要配置。

消费组

消费者组是kafka提供的可扩展且具有容错性的消费者机制。

它是一个组,所以内部可以有多个消费者,这些消费者共用一个ID,一个组内的所有消费者共同协作,完成对订阅的主题的所有分区进行消费。其中一个主题中的一个分区只能由一个消费者消费。

说明:
  1. 一个消费者组可以有多个消费者。
  2. Group ID是一个字符串,在一个kafka集群中,它标识唯一的一个消费者组。
  3. 每个消费者组订阅的所有主题中,每个主题的每个分区只能由一个消费者消费。消费者组之间不影响。

当触发事件类型选择了DIS或KAFKA时,会自动关联出消费组的ID,用户也可以手动修改。

事件处理并发数

选择作业并行处理的数量,最大并发数为10。

事件检测间隔

配置时间间隔,检测DIS通道下是否有新的消息。时间间隔单位可以配置为秒或分钟。

读取策略

  • 从上次位置读起
  • 从最新位置读起

    当“触发事件类型”选择“DIS”或“KAFKA”时才需要配置。

失败策略

选择节点执行失败后的策略:

  • 挂起
  • 忽略失败,继续调度