此文档是关于任务实例状态异常文档中”4.有周期任务,有周期实例但未运行“部分的详细解析

实例状态示意图

实例状态示意图

任务到了定时时间为什么还没跑?

在周期实例运行时,我们可以看到实例定时时间和实例开始运行时间并不完全一致,有时出入还很大。

这个时候我们可以使用上游分析和智能诊断功能帮我们快速定位问题。

上游分析和智能诊断
DataWorks上任务运行需要满足4个条件:
注意 以下图示为3层依赖,实际场景可能不止三层,但逻辑一样,灰色节点右键可以一直展开父节点查看多层父节点状态。
  1. 该节点所有依赖的父节点都已经运行完成(运行成功节点状态:绿色,运维中心DAG图展开父节点)运行状态

    场景:假设当前时间为1点,A2任务定时时间为1点,A3定时时间为3点,B定时时间为0点,B任务依赖A2、A3节点。

    分析:下游B节点定时时间为0点,此时已经到了任务定时时间,但由于上游父节点定时时间未到,所以下游节点B需要等到上游父节点A2、A3定时时间到了并且任务执行成功后,B任务才会跑。如果上游A2、A3任务有一个失败,那下游B任务将不会调度起来。

  2. 任务定时时间已到(等待时间的节点状态:黄色)运行状态

    场景:假设当前时间为4点,A2任务定时时间为1点,A3定时时间为3点,B定时时间为5点,B任务依赖A2、A3节点。

    分析:下游B节点定时时间为5点,父节点A2、A3都已经执行成功,但由于B任务还未到定时时间,所以B任务当前的实例状态为等待时间。

  3. 项目下有足够的调度资源可让任务运行(等待资源节点状态:黄色,日志中显示当前项目下任务并发达到上限,正在等待gateway资源)运行状态

    场景:假设当前时间为4点,A2任务定时时间为1点,A3定时时间为3点,B定时时间为0点,B任务依赖A2、A3节点。

    分析:下游B节点定时时间为0点,父节点A2、A3都已经执行成功,但由于当前B节点使用的调度资源组下资源不够,导致任务没有调度资源,所以B任务当前的实例状态为,等待资源。

    如果是独享调度资源组,您可以在控制台查看独享调度资源组通过资源组使用率查看资源组下正在执行的任务及资源组水位,或者右键实例使用智能诊断功能,查看当前任务在等待资源时,那些任务正在占用资源。

  4. 任务正常调度未冻结(任务被冻结节点状态:紫色)运行状态

    场景:假设当前时间为4点,A2任务定时时间为1点,节点状态为暂停调度,A3定时时间为3点,B定时时间为0点,B任务依赖A2、A3节点。

    分析:通过第一条可知,当前节点执行需要父节点全都执行成功,所以左侧图中由于A2节点是冻结状态,所以下游B节点不会执行。右侧图,父节点都执行成功,但由于冻结节点不会调度,所以右侧图B节点不会执行。(加超链)