更新时间:2024-08-08 GMT+08:00
分享

作业执行失败排查思路

作业执行失败,有如下场景:

场景1

作业投递后处于运行中,运行过程正常,但是最后超时失败。

排查思路

判断是否是作业超时。

单击“状态”右侧的失败图标,查看失败原因,若为Graph timeOut for executin xxx,则可以确认为作业超时失败。

解决方法

根据实际业务需要,在“创建作业”阶段,设置合适的超时时间,默认设置的超时时间为24小时(1440分钟),最大可设置为144000分钟,即作业运行至多100天。

图1 作业设置

场景2

作业投递后处于运行中,但是无日志打印,也没有任何符合预期的输出文件生成。

排查思路

  1. 首先需要用户自行确认一下投递的作业是否会在控制台打印日志,如果是有重定向日志输出到具体文件的话,此处无日志为正常现象。
  2. 子任务的事件中,确认作业子任务的实例是否有正常创建。
    图2 子任务的事件
  3. 查看实例的事件,查看实例是否有正常创建。
    图3 实例的事件

解决方法

  • 若子任务未正常创建,请联系服务技术支持解决。
  • 若子任务正常创建,但是实例未正常创建,可以通过事件信息分析,常见有以下问题场景和对应解决方案。
    • 0/4 nodes are available: XXX Insufficient cpu 或者 XXX Insufficient memory。该场景表示当前集群中无充足的计算资源,可以根据实际需要提前结束掉其他作业或notebook来释放资源,也可以进入系统资源页面购买新节点。
    • 0/4 nodes are available: XXX node(s) didn't match node selector。该场景表示当前集群中无计算资源满足标签要求,用户可以进入系统资源页面,选择节点,通过标签管理给节点添加标签。
    • 其他场景可以联系服务技术支持解决。
图4 购买计算资源
图5 设置计算节点标签

场景3

作业投递后显示运行成功,但是根据日志分析作业有报错,也未能正确输出相关信息。

排查思路、解决方法请参考查看执行结果章节的说明。

场景4

参数配置的不合理导致的作业执行失败。

解决方法

  1. 选择运行失败的分析作业,单击操作列“更多>重试”
  2. 在弹出的提示框中选择“更改参数”。
    图6 更改参数
  3. 在作业配置页面,修改相关参数后,单击页面右上角的“重试作业”。
    图7 重试作业

场景5

并发投递多个作业后,部分作业运行失败,日志中显示IO读写相关错误

图8 运行出错的应用日志

排查思路

检查同一时刻投递作业的输出路径是否存在重复。若存在重复,则很有可能是并发写入同一个文件导致的异常,若不存在请联系服务技术支持解决。

解决方案

平台提供了作业级输出路径,流程级输出路径,子任务级输出路径用于做不同层级的文件隔离。如下图所示,如果三者填写的路径相同,请修改输出路径后重试,如果填写的不同,请联系服务技术支持解决。当三者均不填写时,平台会自动生成随机路径。

图9 作业级输出路径
图10 流程级输出路径
图11 子任务级输出路径

场景6

作业投递后运行失败,日志显示File name too long

图12 运行出错的应用日志

排查思路

检查输入文件的路径单级名称长度是否超过255个字符。若单级名称长度未超过255个字符请联系技术支持。

解决方案

  1. 单级目录名称长度超过255个字符。
    • 不使用SFS或者EVS加速。
    • 若必须进行IO加速,则更改输入文件的路径为单级目录名称不超过255字符的路径。
  2. 若单级名称长度未超过255个字符请联系技术支持。

场景7

同时复制多个文件,日志中显示cp: will not create hard link相关错误信息

图13 输入输出参数信息
图14 应用信息
图15 失败日志信息

排查思路

检查作业是否存在文件或目录类型的输入参数,并且未开启并发,同时改输入参数还填入了多个值,并且路径存在包含关系,如上图所示。

假定镜像命令为cp -rf ${input} ${output},变量替换后实际执行命令为cp -rf /test/sub /test /output,此时会触发cp: will not create hard link的错误。若不符合上述场景,请联系技术支持。

解决方案

  1. 首先排查业务场景是否需要涉及并发,若涉及,请前往应用详情页面开启并发选项即可,则不会出现本问题场景。
    图16 开启并发
  2. 若不涉及并发,则优先排查镜像启动命令设置是否合理、是否确实需要复制路径存在包含关系的多个文件或目录。若不存在相关场景,根据实际业务需求,修改镜像启动命令即可。
  3. 若确实存在路径需要包含多个文件或目录,可参考如下方案解决。
    1. 以下图为例,首先调整应用的输入参数为input-a和input-b,分别表示两个路径存在包含关系的目录(/test/sub和/test )。

    2. 然后修改应用的镜像启动命令如下即可。
      cp -rf ${input-a} ${output};
      cp -rf ${input-b} ${output}; 
      
      # 变量替换后实际执行命令会是
      cp -rf /test/sub /output;
      cp -rf /test /output;

相关文档