Apache spark “无法理解错误”;公共汽车已经停了!正在删除事件…”; 问题

Apache spark “无法理解错误”;公共汽车已经停了!正在删除事件…”; 问题,apache-spark,Apache Spark,我想知道是否有人有一种神奇的方法来避免Spark日志中出现此类消息: 2015-08-30 19:30:44 ERROR LiveListenerBus:75 - SparkListenerBus has already stopped! Dropping event SparkListenerExecutorMetricsUpdate(41,WrappedArray()) 经过进一步调查,我了解到LiveListenerBus扩展了AsynchronousListenerBus。因此,在某一

我想知道是否有人有一种神奇的方法来避免Spark日志中出现此类消息:

2015-08-30 19:30:44 ERROR LiveListenerBus:75 - SparkListenerBus has already
stopped! Dropping event SparkListenerExecutorMetricsUpdate(41,WrappedArray())
经过进一步调查,我了解到
LiveListenerBus
扩展了
AsynchronousListenerBus
。因此,在某一点上,调用了
.stop()
方法。然后,可能发送/接收的消息将被丢弃并保持未处理状态。基本上,一些
SparkListenerExecutorMetricsUpdate
消息不幸尚未收到,一旦收到,它们就会被丢弃到任何地方

这看起来并不重要,因为SparkListenerExecutorMetricsUpdate只对应于执行者的定期更新

令人尴尬的是,我完全不明白为什么会发生这种情况,而且没有任何事情涉及到这个问题。请注意,这是完全不确定的,我无法重现这一点,可能是因为异步性质以及我不了解如何/何时调用
stop()

关于运行代码 严密的样本:

val sc = new SparkContext(sparkConf)
val metricsMap = Metrics.values.toSeq.map(
    v => v -> sc.accumulator(0, v.toString)
).toMap
val outFiles = sc.textFile(outPaths)

而且没有其他引用到
sc
SparkContent
实例。

此票据可能与此相关。

该消息似乎表明sparkcontext停止后纱线分配失败


对不起,我的评论不清楚

主要原因似乎是AM的关闭事件和执行器停止所有操作之间有一定的间隔。
因此,AM试图在执行器停止后重新分配

正如赛赛在下面所说

有趣的是,AM在2015-11-26,03:05:16关闭,但YarnAllocator在11秒后仍请求13名执行者。看起来AM并没有这么快退出,这就是为什么YarnAllocator仍在请求新的容器。通常,若AM在收到断开连接的消息后尽快退出,那个么容器将并没有时间请求YarnAllocator

我有时会在接近完成spark上下文时遇到类似的日志。

就我而言,这张票似乎是答案。

虽然这在理论上可以回答这个问题,但在这里包括答案的基本部分,并提供链接供参考。现在处理这个问题:(我有同样的问题。你找到错误的原因了吗?