何时从磁盘中删除Map器任务的结果?

x4shl7ld  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(281)

Map器任务的输出何时从本地文件系统中删除?它们是否会一直保留到整个作业完成,还是会在此之前被删除?

kcwpcxri

kcwpcxri1#

如果你的 hadoop.tmp.dir 如果设置为默认设置(例如,/tmp/),则很可能 tmpwatch 以及操作系统中的任何默认设置。我建议你进去看看 /etc/cron.d/ , /etc/cron.daily , etc/cron.weekly/ ,以查看您的操作系统默认值。
有一件事要记住 tmpwatch 默认情况下,它将键入访问时间,而不是修改时间(即,自x以来未被“接触”的文件将被视为“过时”并可能被删除)。不过,hadoop的一个常见做法是使用 noatime 以及 nodiratime 标志,这意味着访问时间将不会得到更新,从而扭曲您的tmpwatch行为。
否则,默认情况下,hadoop将清除早于24小时(任务完成后)的任务尝试日志。几年前,这个writeup有一些关于默认行为的重要信息。请特别看一下 mapreduce.job.userlog.retain.hours .
编辑:回应op的评论,澄清了我对这个问题的误解:
至于Map任务的中间输出(溢出到磁盘,由任何组合器使用,并复制到任何缩减器),hadoop权威指南中有这样一句话:
tasktracker不会在第一个reducer检索到map输出后立即从磁盘中删除它们,因为reducer可能会失败。相反,他们会等到jobtracker通知他们删除它们,这是在作业完成之后。
来源
我还在下面给出了+1'd@mgs的答案,因为他们链接了控制这一点的源代码,并描述了作业清理任务。
因此,是的,Map输出数据会在作业完成后立即删除,不管是否成功,也不会很快删除。

relj7zay

relj7zay2#

tasktracker不会在第一个reducer检索到map输出后立即从磁盘中删除它们,因为reducer可能会失败。相反,他们会等到jobtracker通知他们删除它们,这是在作业完成之后”
hadoop:最终指南(第6.4节)

wko9yo5t

wko9yo5t3#

除了map和reduce任务外,还创建了另外两个任务:作业设置任务和作业清理任务。它们由tasktrackers运行,用于在运行任何Map任务之前运行代码来设置作业,以及在所有reduce任务完成之后进行清理。为作业配置的outputcommitter确定要运行的代码,默认情况下这是fileoutputcommitter。对于作业设置任务,它将创建作业的最终输出目录和任务输出的临时工作空间;对于作业清理任务,它将删除任务输出的临时工作空间。
看看outputcommitter。

相关问题