Map器任务的输出何时从本地文件系统中删除?它们是否会一直保留到整个作业完成,还是会在此之前被删除?
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输出数据会在作业完成后立即删除,不管是否成功,也不会很快删除。
hadoop.tmp.dir
tmpwatch
/etc/cron.d/
/etc/cron.daily
etc/cron.weekly/
noatime
nodiratime
mapreduce.job.userlog.retain.hours
relj7zay2#
tasktracker不会在第一个reducer检索到map输出后立即从磁盘中删除它们,因为reducer可能会失败。相反,他们会等到jobtracker通知他们删除它们,这是在作业完成之后”hadoop:最终指南(第6.4节)
wko9yo5t3#
除了map和reduce任务外,还创建了另外两个任务:作业设置任务和作业清理任务。它们由tasktrackers运行,用于在运行任何Map任务之前运行代码来设置作业,以及在所有reduce任务完成之后进行清理。为作业配置的outputcommitter确定要运行的代码,默认情况下这是fileoutputcommitter。对于作业设置任务,它将创建作业的最终输出目录和任务输出的临时工作空间;对于作业清理任务,它将删除任务输出的临时工作空间。看看outputcommitter。
3条答案
按热度按时间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输出数据会在作业完成后立即删除,不管是否成功,也不会很快删除。
relj7zay2#
tasktracker不会在第一个reducer检索到map输出后立即从磁盘中删除它们,因为reducer可能会失败。相反,他们会等到jobtracker通知他们删除它们,这是在作业完成之后”
hadoop:最终指南(第6.4节)
wko9yo5t3#
除了map和reduce任务外,还创建了另外两个任务:作业设置任务和作业清理任务。它们由tasktrackers运行,用于在运行任何Map任务之前运行代码来设置作业,以及在所有reduce任务完成之后进行清理。为作业配置的outputcommitter确定要运行的代码,默认情况下这是fileoutputcommitter。对于作业设置任务,它将创建作业的最终输出目录和任务输出的临时工作空间;对于作业清理任务,它将删除任务输出的临时工作空间。
看看outputcommitter。