You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark历史服务器中已完成应用显示未完成的问题求助

核心问题定位

Yarn侧显示应用已FINISHED/SUCCEDED,但Spark History Server一直标记为“未完成”,根源就是你推测的日志聚合超时(TIME_OUT)——Spark History Server依赖Yarn聚合后的日志来更新应用最终状态,一旦聚合超时,History Server无法获取任务结束的完整事件,就会一直保留“Active Job/Executor”的错误标记。

无History Server操作权限时的解决办法
  • 联系集群管理员排查日志聚合服务
    日志聚合超时大概率是Yarn的日志收集进程阻塞,或者HDFS日志存储路径出了问题:

    • 让管理员检查yarn.log-aggregation-enable是否开启,以及yarn.nodemanager.remote-app-log-dir对应的HDFS路径有没有足够空间、权限是否正确。
    • 可以让管理员对异常应用执行yarn logs -applicationId <app-id>,这个命令会强制触发日志聚合重试,很多时候能修复超时状态,让History Server同步正确的结束状态。
    • 如果上面没用,让管理员重启Yarn NodeManager或日志聚合守护进程,清除阻塞的任务队列。
  • 让管理员清理History Server的异常日志
    如果日志聚合彻底修复不了,只能清理异常应用的事件日志:

    • 管理员找到spark.history.fs.logDirectory配置的日志存储目录,删掉对应异常应用的日志文件(建议先备份)。
    • 重启History Server(如果允许),重启后异常应用的记录就会消失。
  • 提交任务时加参数预防后续问题
    避免再出现类似情况,提交Spark任务时添加以下配置:

    • 延长日志聚合重试时间和次数:--conf yarn.log-aggregation.retry-interval-ms=30000 --conf yarn.log-aggregation.max-retries=10
    • 限制日志大小,防止因日志过大导致聚合超时:--conf spark.driver.maxResultSize=2g --conf spark.executor.logs.rolling.max-size=100m
    • 任务代码末尾务必显式调用spark.stop(),确保SparkContext完全关闭。
验证步骤

处理后先执行yarn application -status <app-id>,确认Log Aggregation Status变为SUCCEDED,再刷新Spark History页面,检查应用状态是否更新为“已完成”。

内容的提问来源于stack exchange,提问作者TheDemonTelevision

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 00:02:26