任务实际执行时,除了受数据开发(DataStudio)中定义的定时调度时间影响外,还受多方因素影响。例如,上游任务的定时时间、上游任务实际执行完成时间、任务执行资源组所剩资源等。本文为您介绍如何使用运行诊断功能快速定位任务未运行成功的原因。

前提条件

请确保已存在周期实例。调度任务通过周期实例的方式自动调度运行,新建任务周期实例生成与您在数据开发定义的节点实例生成方式有关。

背景信息

在运维中心,您可通过实例运行状态、实例颜色及标识,判断任务运行的阶段或任务未运行的原因,具体可通过查看日志定位。
  • 实例颜色及标识:运维中心按照不同的颜色及标识来辨识任务所处于运行流程中的哪个阶段,不同颜色及标识表示不同的运行状态。具体如下表所示。
  • 实例运行状态:您也可查看实例详情,通过实例的属性 > 任务状态,检查任务未运行的原因。
序号状态类型状态标识运行流程图
1运行成功状态运行成功运行流程图
2未运行状态未运行
3运行失败状态运行失败
4正在运行状态正在运行
5等待状态等待状态
6暂停/冻结状态暂停冻结状态
说明 若上游一直处于运行中的状态,您可以参考以下解决方案。
  • 非离线同步任务一直处于运行中的状态,如果需要查看具体原因您可以单击申请链接或扫描下方二维码加入DataWorks钉钉交流群进行售前售后咨询,咨询可直接@智能机器人,值班时间段内也可直接联系值班人员。DataWorks钉钉交流群二维码如下。技术支持二维码
  • 离线同步任务一直处于运行中的状态,可能处于长时间等待任务执行资源,或实际运行过程中部分逻辑处理较慢,详情请参见如何排查离线同步任务运行时间长的问题

进入运行诊断

任务未运行或运行失败场景下,您可在运维中心找到问题实例(周期实例补数据实例测试实例),进入运行诊断,快速定位任务未运行的原因。步骤如下图。运行诊断入口

任务运行诊断流程

任务是否能成功运行,受其上游依赖、定时时间、资源组、任务本身执行情况等多方因素影响。当任务长时间未运行或运行失败时,您可通过DataWorks提供的运行诊断功能,按照如下流程检查导致任务未运行成功的原因。
检查项说明
一、检查上游依赖节点依赖关系设置完成后,需当前节点依赖的所有任务均执行完成,该节点才会运行。您可通过运行诊断 > 上游依赖定位上游存在问题的实例。
二、检查定时时间在数据开发(DataStudio)定义的节点调度时间为任务的预期执行时间。您可通过运行诊断 > 定时检查定位是否到达任务运行的定时时间。

若当前节点依赖的上游任务均已执行成功(即当前节点所依赖的数据均已产出),当前节点才会校验是否已满足自己定义的调度时间,通过校验结果判断是否立即执行任务。

三、检查调度资源

通常,满足当前节点所依赖的上游任务均已执行完成当前节点的定时时间已到达两个条件后,该节点才会启动调度。

但由于调度资源有限,若任务所使用的调度资源组所剩资源不足以运行当前任务,该任务将处于等待调度资源的状态。您可通过运行诊断 > 调度资源定位资源使用情况。
四、检查任务执行情况当满足上述运行条件时,DataWorks会将任务下发至对应的执行资源或服务执行。若任务处于运行失败状态,您可通过运行诊断 > 任务执行快速定位失败原因。
五、任务报警诊断(可选)对于配置了监控报警的任务,可在该任务的运行诊断页面,查看将当前任务纳入监控的规则或基线列表,以及各个规则或基线的触发情况。

检查上游依赖

您可通过以下内容了解上游任务对当前任务执行影响,并通过检查上游依赖,定位阻塞当前任务执行的关键上游任务。

上游任务对当前任务执行影响

节点依赖关系设置完成后,需当前节点依赖的所有任务均执行完成,该节点才会启动运行。上游任务对当前任务执行的影响如下:
  • 上游任务是否为成功状态,决定当前任务是否执行

    节点依赖关系设置后,默认当前任务与当前任务依赖的上游存在数据依赖(即上游任务未执行,将导致当前节点依赖的上游数据未产出,当前节点执行会产生数据质量问题)。因此,当前任务除了要到达自己设置的任务调度时间外,还需检查当前依赖的所有上游任务是否均执行完成。

  • 上游任务的定时时间,决定当前任务的最早开始执行时间

    上游任务存在自己的定时时间,到达该时间后,上游任务才会执行。下游任务的定时运行时间若早于上游任务,即便到达下游任务的定时时间,下游任务也不会调度,需等待上游任务运行完成后才会调度运行。因此,上游任务的定时时间,将决定当前任务最早开始执行时间。详情请参见依赖关系对任务执行的影响

定位上游未运行的任务

若任务处于未运行状态(即实例为未运行标识),您可单击运行诊断,快速跳转至上游依赖页面,自动通过上游分析功能快速定位上游未运行的实例。
说明 上游分析功能默认向上遍历六层,寻找上游未运行成功的任务。若未找到,可单击界面的上游分析,继续分析。
上游依赖检查
特殊情况说明:
  • 孤立节点:若展开上游节点时,未运行任务无任何上游,则该任务为场景:节点孤立。孤立节点不会自动调度,请及时为当前节点设置上游依赖。
  • 上游冻结:若上游任务被冻结,冻结的上游将阻塞下游任务执行。请联系上游任务责任人,确认冻结原因,及时调整业务。

检查定时时间

在数据开发定义的节点调度时间为任务预期的执行时间。若当前节点依赖的上游任务均已执行成功(即当前节点所依赖的数据均已产出),当前节点才会校验是否已满足自己定义的调度时间,进而通过校验结果判断是否立即执行任务。通常,校验存在如下两种情况:
  • 已到达当前任务的定时时间,但上游任务仍处于执行中状态。

    该场景下,一旦上游任务均执行完成后,若任务使用资源组充足,当前任务会立即执行。

  • 上游任务均已执行完成,但未到达当前任务的定时时间。
    该场景下,需等待任务的定时时间到达后,任务才可执行。若任务处于等待时间状态(即实例为等待标识),您可单击运行诊断,快速跳转至定时检查页面查看详情。定时检查

检查调度资源

当满足当前节点所依赖的上游任务均已执行完成当前节点的定时时间已到达条件时,当前任务会开始调度。但由于调度资源有限,若任务所使用的调度资源组所剩资源不足以运行当前任务,则该任务将处于等待调度资源状态。
说明 通常,调度资源与任务执行资源为不同的资源,调度资源仅负责将任务下发至引擎的执行资源上。若任务长时间执行占用引擎资源,即使调度资源下发任务至引擎,也会由于引擎资源不足而导致任务阻塞。您可以通过DataWorks任务下发机制图示辅助理解该说明。

定位占用资源的任务

若任务处于等待资源状态(即实例为等待标识),您可单击运行诊断,快速跳转至调度资源页面,查看哪些任务正在占用资源并及时调整。

可能出现等待资源的场景

若长期调度正常的任务突然出现等待资源的情况,请确认是否存在以下场景。
场景描述
是否存在异常任务长时间占用资源未释放,导致任务阻塞

请通过运行诊断 > 调度资源页面,确认是否存在长时间占用资源的任务,通过查看任务执行日志定位长时间占用资源的原因。

该资源组上执行的任务是否增加

当前使用的资源组所执行的任务增加,会导致当前任务出现等待资源情况。您可根据需要调整任务的优先级或任务使用的资源组。

存在大量内存的任务

请在团队内确认是否存在Shell、PyODPS任务使用大量独享资源组内存的情况存在。

重要
  • 公共调度资源组租户共享,高峰期(通常为00:00~09:00)将出现资源抢占情况,无法保障任务执行时效性。若使用公共调度资源组出现等待资源情况,建议将任务迁移至独享调度资源组执行,详情请参见独享调度资源组
  • 独享调度资源组最大支持的任务并行数,与您所购买的资源组规格有关。独享调度资源组各规格支持执行的任务数,详情请参见独享调度资源组

检查任务执行情况

当满足以上运行条件时,DataWorks会将任务下发至对应的执行资源或服务上执行。DataWorks任务下发机制,详情请参见任务下发机制

若任务处于运行失败状态(即实例为运行失败标识),您可单击运行诊断,快速跳转至任务执行页面,查看任务执行失败的原因。运行失败通常,任务执行失败存在以下几种情况:
  • 任务代码执行失败(数据同步逻辑或数据加工逻辑执行失败)。
  • 任务中产出表配置的数据质量规则校验失败(即任务关联的数据质量规则校验失败)。
  • 任务被冻结。

检查SQL任务代码执行情况

SQL任务可直接在运行诊断 > 任务执行页面查看任务的详细执行日志。DataWorks会将任务下发至对应的引擎执行,若SQL语句执行失败,您可查看相应引擎文档定位原因。

检查同步任务执行情况

若数据集成同步任务开始执行,表示DataWorks的调度系统已经开始调度该任务。但任务是否已经开始同步数据,需根据详细的执行日志进行判断。数据集成任务日志分析,详情请参见离线同步日志分析。常见的同步任务执行问题如下:
  • 数据同步日志长时间打印WAIT

    若数据同步日志长时间打印WAIT,表示DataWorks的调度系统已将同步任务下发,由于当前任务所使用的同步资源组剩余资源无法支持当前任务执行,正在等待其他任务执行完成释放资源。

    例如,4C8G独享数据集成资源组最大支持8个并发数同时执行,若当前存在3个并发数为3的任务,其中2个任务同时执行,则机器剩余的并发数为2,此时另一个并发数为3的任务将由于资源组剩余资源不足,导致当前任务进入等待状态,日志显示wait。该场景,可通过运行诊断 > 任务执行 > 数据集成页签,查看任务等待数据集成资源时,哪些任务正在占用该资源,以及单个任务占用的资源量。
    说明
    • 一个数据集成任务将占用一个调度资源,若任务长时间未运行成功,可能会阻塞其他任务运行。
    • 如果资源使用率高但实际无任务执行或资源组上可执行任务数未达资源组上限但仍无法执行任务,您可以单击申请链接或扫描下方二维码加入DataWorks钉钉交流群进行售前售后咨询,咨询可直接@智能机器人,值班时间段内也可直接联系值班人员。DataWorks钉钉交流群二维码如下。二维码
    同步任务执行检查
    说明 独享数据集成资源组最大支持多少并发同时执行,与您所购买的资源组规格有关。详情请参见独享数据集成资源组
  • 数据同步失败

    若同步任务执行失败,您可参考详细报错与具体插件说明定位原因。详情请参见数据集成常见问题

任务报警诊断

对于配置了监控报警的任务,您可在该任务运行诊断页面的提示信息区域,单击查看详情,在监控详情对话框查看将当前任务纳入监控的规则或基线列表,以及各个规则或基线的触发情况。
说明 仅当任务配置了监控报警时,才会出现该诊断信息。详情请参见任务报警信息诊断
监控报警