在我的Spark历史中,一些应用程序是"不完整";一个星期了。我试过杀死它们,关闭sparkContext((,杀死main.py进程,但都无济于事。
例如,
yarn application -status <id>
显示:
...
State: FINISHED
Final-State: SUCCEDED
...
Log Aggregation Status: TIME_OUT
...
但在Spark History中,我仍然在应用程序的不完整部分看到它。如果我在那里打开这个应用程序,我可以看到一个活动的工作和一个活着的执行者,但他们整个星期都不做任何事情。这看起来像是一个日志错误,但据我所知,这个问题只发生在我身上,其他同事没有这个问题。
这个线程对我没有帮助,因为我无法访问start-history-server.sh.
我想这个问题是因为
Log Aggregation Status: TIME_OUT
因为我的";已完成";应用程序具有
Log Aggregation Status: SUCCEDED
我能做些什么来解决这个问题?现在我有90多份未完成的申请。
在同样的情况下(纱线、火花等(,我已经找到了对我问题的清晰描述,但并没有解决方案:什么是';活跃工作';在Spark历史服务器Spark UI作业部分
来自Spark Monitoring and Instrumentation:
3.退出而未将自己注册为已完成的应用程序将被列为不完整的,即使它们不是更长的运行时间。如果应用程序崩溃,就会发生这种情况。
。。。
意思是:
History Server的UI只显示其事件日志可以在其spark.eventLog.dir
目录中找到的Spark应用程序(Hadoop中的配置通常设置为/user/spark/applicationHistory
(。如果日志没有以特殊ApplicationEnd
事件结束
:
{"Event":"SparkListenerApplicationEnd","Timestamp":1667223930402}
应用程序被认为是不完整的(即使它不再运行(,并且将显示在"不完整的应用程序"页面上。
对于你的问题,这意味着";移动";应用程序到CompletedApps页面将不是微不足道的,并且将需要手动编辑事件日志并将其重新上传到Hadoop中的SHS目录。此外,它不会解决任何问题,因为很可能,你的应用程序在写最后一条消息之前就一直崩溃,它的下一次运行将再次出现在同一个"不完整"页面上。
要诊断它失败的原因,也许您可以查看应用程序驱动程序日志中的任何线索——错误或异常消息。根据应用程序使用的资源管理器类型和部署模式,优雅的关闭看起来有所不同。对于部署模式=集群和YARN RM,它看起来像这样:
:
22/10/31 11:11:11 INFO spark.SparkContext: Successfully stopped SparkContext
22/10/31 11:11:11 INFO yarn.ApplicationMaster: Final app status: SUCCEEDED, exitCode: 0
22/10/31 11:11:11 INFO yarn.ApplicationMaster: Unregistering ApplicationMaster with SUCCEEDED
22/10/31 11:11:11 INFO impl.AMRMClientImpl: Waiting for application to be successfully unregistered.
22/10/31 11:11:11 INFO yarn.ApplicationMaster: Deleting staging directory hdfs://.../.../.sparkStaging/application_<appId>
22/10/31 11:11:11 INFO util.ShutdownHookManager: Shutdown hook called
22/10/31 11:11:11 INFO util.ShutdownHookManager: Deleting directory /.../.../appcache/application_<appId>/spark-<guid>