标题使问题非常清楚。为什么 jobtracker 中有两个不同的部分用于完成和退休的工作?
谢谢。
作业退休是作业跟踪器将作业持久化到磁盘并清理内存的正常过程。您可以在 Cloudera 博客上阅读更多详细信息:
作业完成后,它会按照上述方式保存在内存中(最多
mapred.jobtracker.completeuserjobs.maximum
)和磁盘上。有一个配置值控制已完成作业的整体退休策略:键:
mapred.jobtracker.retirejob.interval
默认值:24 * 60 * 60 * 1000(1 天)
换句话说,已完成的作业默认在一天后退休。默认情况下每分钟检查一次要退休的作业,并且可以通过以下方式进行控制:键:
mapred.jobtracker.retirejob.check
默认值:60 * 1000(60 秒,以毫秒为单位)
检查在 JobTracker 运行时持续运行。如果一个工作退休了,它就会从 JobTracker 的内存列表中删除(它也会删除该工作的所有任务等)。作业在完成时间的至少 1 分钟(在 JobTracker.java 中硬编码)内不会退役。退休调用还会删除作业的JobTracker Local(见上文)文件。剩下的就是历史目录中每个退休作业的两个文件 (hadoop.job.history.location
) 加上 - 如果启用 - 每个作业文件 (hadoop.job.history.user.location
)。