在 Jobtracker Web UI 中,我看到了这个名为“Failed/Killed Task Attempts”的专栏。
我想知道它们之间的区别。我猜“失败的”是指在重试后最终确实失败的任务(所以根本没有完成恢复?)而“被杀死的”是指被杀死的任务(由于超时等)但它们可能会被重试?
Hadoop 可以自行决定终止任务的原因有几个:
a) 任务在超时期间不报告进度(默认为 10 分钟)
b) FairScheduler 或 CapacityScheduler 需要其他池 (FairScheduler) 或队列 (CapacityScheduler) 的插槽。
c) 推测执行导致不需要任务的结果,因为它已经在其他地方完成。
Hadoop 使用“推测执行”。可以在多个盒子上启动相同的任务。第一个完成的人获胜,其他副本被杀死。
失败的任务是出错的任务。
我有点不同意大卫,因为超时任务没有被标记为已终止,而是被标记为失败。
在我的理解中,以下是失败任务与终止任务的定义
任务可能因为以下原因而失败
任务可以被杀死,因为
失败的任务是在运行期间抛出异常的尝试,被杀死的任务是在推测执行过程中被杀死的重复任务。
失败的任务 1. 有 bug 的 map 或 reduce 代码(运行时异常错误) 2. jvm 突然退出 3. 挂起的任务(如果启用它可能会触发推测执行)
终止任务 1. 推测性执行终止长时间运行的作业。2. 如果用户自己杀死了一个工作。3. 任务跟踪器故障