数据治理中心 DATAARTS STUDIO-传统周期调度:设置依赖作业后的作业运行原理
设置依赖作业后的作业运行原理
- 同周期依赖:即作业A与其依赖作业B为相同调度周期,如分钟依赖分钟、小时依赖小时或天依赖天。
同周期依赖的情况下,当作业A的依赖作业配置为作业B后,作业A会在 (作业A执行时间-作业A周期时间, 作业A执行时间] 时间区间内检查是否有作业B的实例运行,只有在此期间作业B的实例运行完成才会运行作业A。
示例1:作业A依赖作业B,均为分钟调度。作业A的开始时间10:00,周期时间20分钟;作业B的开始时间10:00,周期时间10分钟。则会出现如下情况:表1 示例1:同周期作业依赖情况 时间点
作业B(分钟调度,开始时间10:00,周期时间10分钟)
作业A(分钟调度,开始时间10:00,周期时间20分钟)
10:00
执行
检查 (09:40, 10:00] 区间,有作业B实例运行,待作业B执行完成后,执行作业A
10:10
执行
-
10:20
执行
检查 (10:00, 10:20] 区间,有作业B实例运行,待作业B执行完成后,执行作业A
10:30
执行
-
...
...
...
示例2:作业A依赖作业B,均为天调度。作业A的开始时间为8月1日09:00;作业B的开始时间8月1日10:00。则会出现如下情况:表2 示例2:同周期作业依赖情况 时间点
作业B(天调度,开始时间为8月1日10:00)
作业A(天调度,开始时间8月1日09:00)
8月1日09:00
-
检查 (7月31日09:00, 8月1日09:00] 区间,无作业B实例运行,不执行作业A
8月1日10:00
执行
-
8月2日09:00
-
检查 (8月1日09:00, 8月2日09:00] 区间,有作业B实例运行,待作业B执行完成后,执行作业A
8月2日10:00
执行
-
...
...
...
天作业依赖天作业,上游作业调度时间早于下游作业,下游作业才能依赖到上游当天的作业。
- 跨周期依赖:即作业A与其依赖作业B为不同调度周期,如小时依赖分钟、天依赖分钟、天依赖小时或月依赖天。
跨周期依赖的情况下,当作业A的依赖作业配置为作业B后,作业A会在 [上一作业A调度周期的自然起点, 当前作业A调度周期的自然起点) 时间区间内检查是否有作业B的实例运行,只有在此期间作业B的实例运行完成才会运行作业A。
调度周期的自然起点定义如下:- 调度周期为小时:上一调度周期的自然起点为上一小时的零分零秒,当前调度周期的自然起点为当前小时的零分零秒。
- 调度周期为天:上一调度周期的自然起点为昨天的零点零分零秒,当前调度周期的自然起点为今天的零点零分零秒。
- 调度周期为月:上一调度周期的自然起点为上个月1号的零点零分零秒,当前调度周期的自然起点为当月1号的零点零分零秒。
示例3:作业A依赖作业B,作业A为天调度,作业B为小时调度。作业A的每天02:00执行;作业B的开始时间00:00,间隔时间10小时。则会出现如下情况:表3 示例3:跨周期作业依赖情况 时间点
作业B(小时调度,开始时间00:00,间隔时间10小时)
作业A(天调度,每天02:00执行)
第1天00:00
执行
-
第1天02:00
-
检查 [第0天00:00:00, 第1天00:00:00) 区间,无作业B实例运行,不执行
第1天10:00
执行
-
第1天20:00
执行
-
第2天00:00
执行
-
第2天02:00
-
检查 [第1天00:00:00, 第2天00:00:00) 区间,有作业B实例运行完成,执行作业A
第2天10:00
执行
-
第2天20:00
执行
-
...
...
...
示例4:作业A依赖作业B,作业A为月调度,作业B为天调度。作业A的每月1号、2号的02:00执行;作业B在8月1日00:00开始执行。则会出现如下情况:表4 示例4:跨周期作业依赖情况 时间点
作业B(天调度,8月1日00:00执行)
作业A(月调度,每月1号、2号的02:00执行)
8月1日00:00
执行
-
8月1日02:00
-
检查 [7月1日00:00:00, 8月1日00:00:00) 区间,无作业B实例运行,不执行
8月2日00:00
执行
-
8月2日02:00
-
检查 [7月1日00:00:00, 8月1日00:00:00) 区间,无作业B实例运行,不执行
...
-
...
9月1日00:00
执行
-
9月1日02:00
-
检查 [8月1日00:00:00, 9月1日00:00:00) 区间,有作业B实例运行完成,执行作业A
9月2日00:00
执行
-
9月2日02:00
-
检查 [8月1日00:00:00, 9月1日00:00:00) 区间,有作业B实例运行完成,执行作业A
...
...
...