由于执行程序失败,Spark应用程序被卡住并永远运行

时间:2018-11-29 10:46:48

标签: apache-spark apache-spark-sql

我在生产中有一个火花作业,该作业计划每天在客户端模式下运行(我承认客户端模式不是在生产中执行作业的可靠方法,而是当前配置作业的方式)。

该作业在11月24日开始执行时卡住了,此后一直运行到今天(11月29日),直到我们注意到该问题并杀死了该作业。这项工作平均需要2分钟才能完成,我确认11月24日的运行没有大量工作,因此应该在2到3分钟内完成。

在查看此长时间执行的作业的日志时,我在下面看到一个是日志文件中的最后一个错误,然后日志显示该作业停留在阶段1

[Stage 1:>                                                          (0 + 1) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 1) / 3]18/11/22 10:22:36 ERROR client.TransportClient: Failed to send RPC 8301663055171047224 to /15.90.21.22:33226: java.nio.channels.ClosedChannelException
java.nio.channels.ClosedChannelException
    at io.netty.channel.AbstractChannel$AbstractUnsafe.write(...)(Unknown Source)
18/11/22 10:22:36 ERROR cluster.YarnScheduler: Lost executor 1 on prodsr000001000.netsmart.com: Slave lost

[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
[Stage 1:===================>                                       (1 + 0) / 3]
..
..
..
..
..
..thousand of more same lines
[Stage 1:===================>                                       (1 + 0) / 3]

基于上述错误,日志显示丢失了从属服务器上的执行器,应用程序主服务器应已识别出该执行器(此火花安装在YARN上运行),并在其他某个节点上启动了丢失的执行器。那为什么工作却停留在同一阶段和同一任务超过五天。感谢这里的帮助。

如果应用程序主服务器无法执行该作业或有任何资源限制,那么它是否应该刚刚杀死该作业而不是让其处于挂起且始终处于执行状态?

这与提交作业的客户端模式有关吗?

如果可能的话,我无权访问生产Spark Web UI来进一步深入研究该问题。

0 个答案:

没有答案