本文为您汇总运维中心的相关问题。
如何处理孤立节点?
- 问题现象
在运维大屏页面查看到存在孤立节点,或者对实例进行运行诊断时,发现上游存在孤立节点。
孤立节点是指在生产环境中,失去所有上游依赖的节点。孤立节点本身将无法生成实例,并且将导致其下游节点无法正常调度,影响数据产出。
- 可能原因
DataWorks任务根据您配置的依赖关系依次运行,造成孤立节点的根本原因是依赖丢失。以下图的节点依赖为例,为您介绍造成孤立节点更具体的原因。
- 依赖的输出名称被修改或删除。
- 上游节点不存在。
- 上游节点过期。
- 上游节点未开启调度。
- 排查处理方法
- 排查依赖的输出名称是否被修改或删除。
- 场景描述
示例图中节点B的父节点输出名称为
工作空间名称.A
,且两个节点已被发布至生产环境。您在节点A的调度配置面板,删除或修改工作空间名称.A
为其它名称,并且重新发布节点A至生产环境。该操作会导致节点B依赖的输出名称工作空间名称.A
失效,造成节点B变为孤立节点。 - 排查思路
在上游节点A的编辑页面右侧,单击调度配置。在调度依赖区域查看该输出名称是否被修改,并重新发布节点A至生产环境。
- 解决方法
修改节点B的父节点输出名称为
工作空间名称.A
,并重新发布至生产环境。
- 场景描述
- 排查上游节点是否存在。
- 场景描述
您在发布节点时,仅发布了节点B,未发布上游节点A,导致节点B成为孤立节点。或者节点A和节点B均已发布至生产环境,您通过调用DataWorks OpenAPI,强制下线节点A,导致节点B成为孤立节点。
- 排查思路
在任务发布页面,排查上游节点A是否未发布或已下线。
- 解决方法
发布上游节点A至生产环境,详情请参见发布任务。
- 场景描述
- 排查上游节点是否过期。
- 排查思路
在节点的编辑页面右侧,单击调度配置。在时间属性区域,排查上游节点的生效时间,确认是否过期。
过期节点将不再生成实例,会导致下游节点也无法生成实例。
- 解决方法
修改该节点的生效时间在有效日期内。
- 排查思路
- 排查上游节点是否开启调度。
- 排查思路
跨项目依赖的情况下,在节点的编辑页面右侧,单击调度配置。在时间属性区域,排查上游节点A所在的工作空间是否开启周期调度。
如果未开启调度,则属于另一个工作空间的节点B成为孤立节点。
- 解决方法
开启上游节点所在工作空间的周期调度。
- 排查思路
- 排查依赖的输出名称是否被修改或删除。
报错Communications link failure,该如何处理?
- 读取报错
- 问题现象
读取数据时,报错如下。
Communications link failure The last packet successfully received from the server was 7,200,100 milliseconds ago. The last packet sent successfully to the server was 7,200,100 milliseconds ago. - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
- 可能原因
数据库执行SQL查询速度慢,导致MySQL读超时。
- 解决方法
- 排查是否设置了
where
过滤条件,以确保筛选字段已添加索引。 - 排查源数据表的数据是否太多。如果数据太多,建议拆分为多个任务。
- 查询日志找到执行阻塞的SQL,咨询数据库管理员解决。
- 排查是否设置了
- 问题现象
- 写入报错
- 问题现象
写入数据时,报错如下。
Caused by: java.util.concurrent.ExecutionException: ERR-CODE: [TDDL-4614][ERR_EXECUTE_ON_MYSQL] Error occurs when execute on GROUP 'xxx' ATOM 'dockerxxxxx_xxxx_trace_shard_xxxx': Communications link failure The last packet successfully received from the server was 12,672 milliseconds ago. The last packet sent successfully to the server was 12,013 milliseconds ago. More...
- 可能原因
慢查询导致SocketTimeout。TDDL默认连接数据的SocketTimeout是12秒,如果一个SQL在MySQL端执行超过12秒仍未返回,会报4614的错误。当数据量较大或服务端繁忙时,会偶尔出现该错误。
- 解决方法
- 建议数据库稳定后,重新运行同步任务。
- 联系数据库管理员调整该超时时间。
- 问题现象
报错Semantic analysis exception - Invalid partition value,该如何处理?
- 问题现象
日志报错如下。
FAILED: ODPS-0130071:[1,71] Semantic analysis exception - Invalid partition value: '20200715'?
- 可能原因
未配置任务的调度配置。
- 排查思路
单击节点编辑页面右侧的调度配置,确认是否已配置参数。
如果已设置bizdate,仍然报上述问题,请修改参数为
bizdate=${yyyymmdd}
。
报错no available machine resources under the task resource group,该如何处理?
- 问题现象
运维中心报错如下。
no available machine resources under the task resource group
- 解决方法
在运维中心页面的左侧导航栏,单击 。选中单击页面下方的
- 进入数据开发页面。
- 登录DataWorks控制台。
- 在左侧导航栏,单击工作空间列表。
- 选择工作空间所在地域后,单击相应工作空间后的进入数据开发。
- 单击左上方的
图标,选择 。
- 在左侧导航栏,单击 。
- 选中相应的任务,单击页面下方的 。
- 在批量修改调度资源组对话框中,选择修改后的资源组,单击确定。
- 对相应任务进行补数据重跑,详情请参见补数据实例。
- 进入数据开发页面。
什么情况下会出现任务空跑?
- 问题现象
通常周调度或月调度会出现空跑现象。当设置每周或每月的某个时间点运行任务,除设置的时间点外运行,都会出现空跑现象。
空跑现象有以下两种:- 实例状态:周实例和月实例空跑周期。
- 任务状态显示成功(正常调度),运行日志为空,没有实际的跑数据。
- 解决方法
如果在其它的时间运行,只能修改调度时间后,重新提交或补数据。
如果是日调度任务,请检查该节点的调度配置页面是否设置节点为空跑。
如果生成实例方式为T+1次日生成,业务时间为今天的数据,明天才会去运行。
如果任务在每月1日调度运行,则补数据时,选择业务日期为上个月的最后一天。
如果指定时间段内,无有效的任务实例,请检查节点的生效时间。
空跑任务特殊场景:运行时间为0s,且实例运行成功,实际实例为空跑调度。例如,小时任务一天一次性生成24个实例。从0点到23点,这些实例一次性生成。但发布时间是当天的14:40,则14:40之前的实例均属于空跑调度。从15点开始,实例才会正常调度运行。
天任务的原理和小时任务一致。例如,定时时间为00:10,但实际任务的发布时间为11点,则该节点当日的实例为空跑调度,因为00:10的定时时间已过。
如何恢复暂停的节点?
- 问题描述
需要恢复已暂停的节点,该如何操作?
- 解决方法
您可以通过以下两种方式恢复暂停的节点:
- 在运维中心页面,打开节点的DAG图,右键单击节点,选择恢复(解冻)。
- 在数据开发页面,打开相应节点的调度配置页面。在时间属性中设置或取消暂停调度,并重新提交和发布节点。
说明 请确认暂停的节点是否为周期任务。
已冻结的任务仍然调度运行,该如何处理?
- 请确认冻结的任务是否为周期任务。
- 周期任务的冻结操作对已经生成的实例无效,明天生成的实例将被冻结。
为什么任务一直在等待gateway?
- 问题描述
任务一直在等待云端的gateway资源。
- 可能原因
工作空间下的任务并发执行数已达上限。
- 解决方法
- 检查工作空间下,是否存在任务运行时间过长的任务。如果任务长时间未完成,资源未释放会影响其它任务的运行。
- 如果有相关需求,请前往控制台购买独享资源组,以缓解资源紧张的情况。
如何设置优先级?
- DataWorks上调度任务实例的优先级:数值越大,优先级越高。您可以理解为任务在工作空间中调度集群的优先级。
- 基线的优先级:取值包括1、3、5、7和8,数值越大,优先级越高。
- MaxCompute上SQL任务的优先级:取值为[1~9],数值越小,优先级越高。后续会转化为priority参数。您可以理解为任务在计算集群上的优先级,并可以在LogView中查看。
- 8级基线对应1级SQL任务,高优先级。
- 通常基线的优先级高,意味着DataWorks任务的调度优先级和MaxCompute上SQL计算任务优先级都会高。
- SQL任务优先级的调整方式:在执行的SQL最前面添加
set odps.instance.priority=8;
。该建议仅供参考。取值[1-9],数值越小优先级越高,后续会转化为Priority参数。
- 调整周期任务优先级:您可以通过调整基线优先级的方式来调整周期任务优先级(默认值为1)。
- 调整调度配置优先级:
- 进入运维中心页面。
- 在左侧导航栏,单击 。
- 单击相应基线后的编辑。
- 在修改基线对话框中,设置优先级。
- 单击完成。
基线优先级可以上推至MaxCompute计算任务优先级,也对应为instance的优先级。基线的等级越高,调度优先级越高,数值较高的基线将被优先调度。