本文为您介绍任务未运行的相关问题。

任务运行条件

运维中心通过不同状态标识区分状态类型。

正常调度任务运行需要有多个条件:调度资源、定时时间、上游节点运行状态、调度属性为正常调度(未被冻结)。

序号 状态类型 状态标识 运行流程图
1 运行成功状态 运行成功 运行流程图
2 未运行状态 未运行
3 运行失败状态 运行失败
4 正在运行状态 正在运行
5 等待状态 等待状态
6 暂停/冻结状态 暂停冻结状态
  • 紫色(冻结):说明该实例被冻结了,任务将不会运行,并且阻塞下游,可以单击展开详情>操作日志,在操作记录中查看相关记录。
  • 黄色(等待):等待任务定时时间,单击右下角展开详情,在属性中查看相关信息。
    说明
    • 出现等待资源状态,说明当前项目下正在运行的任务达到上限,可以右键实例在运行诊断的调度资源部分查看任务等待资源时,哪些任务正在占用资源,详情请参见等待资源
    • 出现等待时间状态,说明当前实例定时时间还未到。
  • 灰色(未运行):需右键灰色实例,查看上游父节点的状态。建议使用运行诊断上游分析
  • 蓝色(运行中):说明实例正在运行,但任务若长时间未运行成功,详情请参见等待资源
    说明 上游没有出现以上任何一种状态,整个业务流程均为灰色,说明上游依赖关系变动导致业务流程都被孤立。详情请参见孤立节点

任务到定时时间,为什么还没运行?

  • 问题现象

    在周期实例运行时,实例定时时间和实例开始运行时间有时并不完全一致,或任务到了定时时间还没运行。

    定时时间和开始时间不完全一致
  • 问题排查
    您可以先通过上游分析功能定位阻塞当前任务运行的关键实例,再通过智能诊断分析当前任务阻塞原因,快速定位问题。上游分析
    DataWorks上任务未运行通常有4种情况,通过以下示例进行分析说明。以下图示为三层依赖,实际场景可能不止三层,但逻辑一样。
    • 场景一:该节点所有依赖的父节点还未运行成功(未运行节点状态:灰色)。运行状态

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

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

      结论:当该节点所有的依赖的父节点都已经运行完成时,当前节点才会运行。

      说明 若上游一直处于运行中的状态,您可以参考以下解决方案。
      • 非离线同步任务一直处于运行中的状态,您可以工单咨询对应引擎同学查看具体原因。
      • 离线同步任务一直处于运行中的状态,可能处于长时间等待任务执行资源,或实际运行过程中部分逻辑处理较慢,详情请参见如何排查离线同步任务运行时间长的问题
    • 任务定时时间未到(等待时间节点状态:黄色)。运行状态

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

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

      结论:任务定时时间已到,当前节点才会运行。

    • 项目下没有足够的调度资源可让任务运行(等待资源节点状态:黄色)。运行状态

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

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

      结论:工作空间调度资源充足时,任务才会运行。(等待资源状态时,日志中显示当前项目下任务并发达到上限,正在等待gateway资源)

      说明 如果任务运行在独享调度资源组,您可以在DataWorks控制台查看独享调度资源组,通过资源组使用率查看资源组下正在执行的任务及资源组水位,或者右键实例使用智能诊断功能,查看当前任务在等待资源时,哪些任务正在占用资源,详情请参见,等待资源
    • 任务被冻结(任务被冻结节点状态:紫色)。运行状态

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

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

      结论:父节点被冻结或当前节点被冻结,任务将不会运行。