apache-spark - 在纱线杀死执行程序后,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.
所以似乎我设置的任何重试计数都没有被考虑。是否有一个标志表明应该计算 executor 中的所有失败,并且当 maxFailures 发生时作业应该失败?
火花版本 2.11
解决方案
Spark 区分代码抛出一些异常和外部问题,即代码故障和容器故障。但 spark 不认为抢占是容器故障。
看ApplicationMaster.scala
,如果达到容器故障限制,这里 spark 决定退出。它从YarnAllocator
.
YarnAllocator
在某些情况下更新其失败的容器。但不适用于抢占,请参见case ContainerExitStatus.PREEMPTED
相同的功能。
我们使用 spark 2.0.2,其中代码略有不同但逻辑相同。修复似乎也更新了失败的容器集合以进行抢占。
推荐阅读
- git - 如何将主分支合并到我当前的分支
- android - 如何使用改造和 gson 转换器将嵌套的 JSON 扁平化为单个类?
- c# - 如何对这个函数进行单元测试
- javascript - 我如何将按钮单击事件与 vuetify 数据表中一行内的行单击事件分开
- android - 如何在条形图像上检测补丁?
- node.js - 拒绝加载图片“https://diary2020.herokuapp.com/favicon.ico”
- javascript - 如何让 JSON 看起来很漂亮?
- sql - 当 tableX 中的 a 列出现在 tableY 的 b 列中时的情况
- css - npm SCSS 未编译
- javascript - 提交表单后更改按钮的颜色