任务实际执行时,除了受数据开发(DataStudio)中定义的定时调度时间影响外,还受多方因素影响。例如,上游任务的定时时间、上游任务实际执行完成时间、任务执行资源组所剩资源等。本文为您介绍如何使用运行诊断功能快速定位任务未运行成功的原因。
前提条件
请确保已存在周期实例。调度任务通过周期实例的方式自动调度运行,新建任务周期实例生成与您在数据开发定义的节点实例生成方式有关。背景信息
- 实例颜色及标识:运维中心按照不同的颜色及标识来辨识任务所处于运行流程中的哪个阶段,不同颜色及标识表示不同的运行状态。具体如下表所示。
- 实例运行状态:您也可查看实例详情,通过实例的 ,检查任务未运行的原因。
序号 | 状态类型 | 状态标识 | 运行流程图 |
---|---|---|---|
1 | 运行成功状态 | ||
2 | 未运行状态 | ||
3 | 运行失败状态 | ||
4 | 正在运行状态 | ||
5 | 等待状态 | ||
6 | 暂停/冻结状态 |
- 非离线同步任务一直处于运行中的状态,如果需要查看具体原因您可以单击申请链接或扫描下方二维码加入DataWorks钉钉交流群进行售前售后咨询,咨询可直接@智能机器人,值班时间段内也可直接联系值班人员。DataWorks钉钉交流群二维码如下。
- 离线同步任务一直处于运行中的状态,可能处于长时间等待任务执行资源,或实际运行过程中部分逻辑处理较慢,详情请参见如何排查离线同步任务运行时间长的问题。
进入运行诊断
任务运行诊断流程
检查项 | 说明 |
---|---|
一、检查上游依赖 | 节点依赖关系设置完成后,需当前节点依赖的所有任务均执行完成,该节点才会运行。您可通过 | 定位上游存在问题的实例。
二、检查定时时间 | 在数据开发(DataStudio)定义的节点调度时间为任务的预期执行时间。您可通过 定位是否到达任务运行的定时时间。 若当前节点依赖的上游任务均已执行成功(即当前节点所依赖的数据均已产出),当前节点才会校验是否已满足自己定义的调度时间,通过校验结果判断是否立即执行任务。 |
三、检查调度资源 | 通常,满足当前节点所依赖的上游任务均已执行完成、当前节点的定时时间已到达两个条件后,该节点才会启动调度。 但由于调度资源有限,若任务所使用的调度资源组所剩资源不足以运行当前任务,该任务将处于等待调度资源的状态。您可通过 定位资源使用情况。 |
四、检查任务执行情况 | 当满足上述运行条件时,DataWorks会将任务下发至对应的执行资源或服务执行。若任务处于运行失败状态,您可通过 | 快速定位失败原因。
五、任务报警诊断(可选) | 对于配置了监控报警的任务,可在该任务的运行诊断页面,查看将当前任务纳入监控的规则或基线列表,以及各个规则或基线的触发情况。 |
检查上游依赖
您可通过以下内容了解上游任务对当前任务执行影响,并通过检查上游依赖,定位阻塞当前任务执行的关键上游任务。上游任务对当前任务执行影响
- 上游任务是否为成功状态,决定当前任务是否执行
节点依赖关系设置后,默认当前任务与当前任务依赖的上游存在数据依赖(即上游任务未执行,将导致当前节点依赖的上游数据未产出,当前节点执行会产生数据质量问题)。因此,当前任务除了要到达自己设置的任务调度时间外,还需检查当前依赖的所有上游任务是否均执行完成。
- 上游任务的定时时间,决定当前任务的最早开始执行时间
上游任务存在自己的定时时间,到达该时间后,上游任务才会执行。下游任务的定时运行时间若早于上游任务,即便到达下游任务的定时时间,下游任务也不会调度,需等待上游任务运行完成后才会调度运行。因此,上游任务的定时时间,将决定当前任务最早开始执行时间。详情请参见依赖关系对任务执行的影响。
定位上游未运行的任务
- 孤立节点:若展开上游节点时,未运行任务无任何上游,则该任务为场景:节点孤立。孤立节点不会自动调度,请及时为当前节点设置上游依赖。
- 上游冻结:若上游任务被冻结,冻结的上游将阻塞下游任务执行。请联系上游任务责任人,确认冻结原因,及时调整业务。
检查定时时间
- 已到达当前任务的定时时间,但上游任务仍处于执行中状态。
该场景下,一旦上游任务均执行完成后,若任务使用资源组充足,当前任务会立即执行。
- 上游任务均已执行完成,但未到达当前任务的定时时间。该场景下,需等待任务的定时时间到达后,任务才可执行。若任务处于等待时间状态(即实例为标识),您可单击运行诊断,快速跳转至定时检查页面查看详情。
检查调度资源
定位占用资源的任务
若任务处于等待资源状态(即实例为标识),您可单击运行诊断,快速跳转至调度资源页面,查看哪些任务正在占用资源并及时调整。
可能出现等待资源的场景
场景 | 描述 |
---|---|
是否存在异常任务长时间占用资源未释放,导致任务阻塞 | 请通过查看任务执行日志定位长时间占用资源的原因。 页面,确认是否存在长时间占用资源的任务,通过 |
该资源组上执行的任务是否增加 | 当前使用的资源组所执行的任务增加,会导致当前任务出现等待资源情况。您可根据需要调整任务的优先级或任务使用的资源组。 |
存在大量内存的任务 | 请在团队内确认是否存在Shell、PyODPS任务使用大量独享资源组内存的情况存在。 |
检查任务执行情况
当满足以上运行条件时,DataWorks会将任务下发至对应的执行资源或服务上执行。DataWorks任务下发机制,详情请参见任务下发机制。
- 任务代码执行失败(数据同步逻辑或数据加工逻辑执行失败)。
- 任务中产出表配置的数据质量规则校验失败(即任务关联的数据质量规则校验失败)。
- 任务被冻结。
检查SQL任务代码执行情况
SQL任务可直接在
页面查看任务的详细执行日志。DataWorks会将任务下发至对应的引擎执行,若SQL语句执行失败,您可查看相应引擎文档定位原因。检查同步任务执行情况
- 数据同步日志长时间打印WAIT
若数据同步日志长时间打印WAIT,表示DataWorks的调度系统已将同步任务下发,由于当前任务所使用的同步资源组剩余资源无法支持当前任务执行,正在等待其他任务执行完成释放资源。
例如,4C8G独享数据集成资源组最大支持8个并发数同时执行,若当前存在3个并发数为3的任务,其中2个任务同时执行,则机器剩余的并发数为2,此时另一个并发数为3的任务将由于资源组剩余资源不足,导致当前任务进入等待状态,日志显示wait
。该场景,可通过 页签,查看任务等待数据集成资源时,哪些任务正在占用该资源,以及单个任务占用的资源量。说明- 一个数据集成任务将占用一个调度资源,若任务长时间未运行成功,可能会阻塞其他任务运行。
- 如果资源使用率高但实际无任务执行或资源组上可执行任务数未达资源组上限但仍无法执行任务,您可以单击申请链接或扫描下方二维码加入DataWorks钉钉交流群进行售前售后咨询,咨询可直接@智能机器人,值班时间段内也可直接联系值班人员。DataWorks钉钉交流群二维码如下。
说明 独享数据集成资源组最大支持多少并发同时执行,与您所购买的资源组规格有关。详情请参见独享数据集成资源组。 - 数据同步失败
若同步任务执行失败,您可参考详细报错与具体插件说明定位原因。详情请参见数据集成常见问题。