纱线杀死纱线后,Spark不断重新启动执行者



i正在使用Spark Yarn群集模式进行测试。Spark作业以较低的优先级队列运行。当更高的优先级作业到来时,它的容器将被抢占。但是,它在被杀死后立即重新启动了容器。更高的优先应用程序再次杀死了它们。因此,应用程序被困在此僵局中。

在此处讨论了执行者的无限重试。在日志中找到以下跟踪。

2019-05-20 03:40:07 [dispatcher-event-loop-0] INFO TaskSetManager :54 Task 95 failed because while it was being computed, its executor exited for a reason unrelated to the task. Not counting this failure towards the maximum number of failures for the task.

因此,似乎没有考虑我设定的任何重试计数。是否有一个标志表明应计算执行者中的所有失败,并且在MaxFailures发生时应失败?

火花版2.11

spark在抛出一些异常和外部问题,即代码故障和容器故障之间区分。但是Spark并不认为先发制人是容器故障。

请参阅ApplicationMaster.scala,这里的Spark决定如果击中容器故障限制,请决定退出。它从YarnAllocator获取失败的执行者数量。 YarnAllocator在某些情况下更新了失败的容器。但不是为了先发制人,请参见同一功能中的case ContainerExitStatus.PREEMPTED

我们使用Spark 2.0.2,其中代码略有不同,但逻辑相同。修复似乎也更新了失败的容器收集以进行先发制人。

相关内容

  • 没有找到相关文章

最新更新