DAGAppMaster 启动失败
现象:作业提交后立即失败,日志中出现AM 启动类错误。
处理步骤:
1、检查 tez.lib.uris 指向的 HDFS 依赖包是否存在且可读;
2、检查 AM 内存配置(tez.am.resource.memory.mb 与 tez.am.launch.cmd-opts)是否超出队列限制;
3、查看 /var/log/hive与YARN 页面中该 application 的诊断信息。
Container 被 YARN 杀掉(超出内存限制)
现象:任务失败,日志出现Container killed by YARN for exceeding memory limits 或 The physical memory limit exceeded。
处理步骤:
1、确认任务实际需要的堆内存,调大任务容器内存配置;
2、检查 JVM 堆内存设置是否超过容器内存(含堆外开销),保持堆内存约为容器内存的 80%;
3、必要时降低顶点并行度,减少单容器压力。
作业执行中OOM
现象:任务日志出现java.lang.OutOfMemoryError,如 Java heap space。
处理步骤:
1、检查 tez.runtime.io.sort.mb 是否设置过大挤占堆内存;
2、调大任务堆内存或 tez.container.max.java.heap.fraction;
3、通过 TezUI 计数器观察溢写情况,评估是否数据倾斜导致单任务数据量过大。
TezUI 上看不到作业
现象:作业已提交执行,但TezUI 页面查询不到对应 DAG。
处理步骤:
1、确认历史服务是否正常,异常时联系集群管理员恢复;
2、检查作业是否实际提交成功(YARN 中是否存在对应 application);
3、历史数据存在写入延迟时,稍后刷新页面。
作业长时间排队
现象:作业状态长时间为ACCEPTED,未进入运行。
处理步骤:
1、查看目标队列的资源配置与当前使用率;
2、确认作业是否提交到了正确队列(tez.queue.name);
3、队列资源紧张时,错峰提交或联系管理员调整队列配额。
如何收集作业诊断信息
处理:定位问题时按如下顺序收集信息:
1、YARN 页面获取 application id 与最终状态、诊断信息;
2、TezUI 查看 DAG、顶点、任务状态与计数器,定位失败或最慢任务;
3、使用 yarn logs -applicationId application_<id> 拉取完整聚合日志,结合 /var/log/hive下的服务日志分析。