Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 当减速器仍在运行时,我可以读取减速器输出吗?_Hadoop_Mapreduce_Hdfs - Fatal编程技术网

Hadoop 当减速器仍在运行时,我可以读取减速器输出吗?

Hadoop 当减速器仍在运行时,我可以读取减速器输出吗?,hadoop,mapreduce,hdfs,Hadoop,Mapreduce,Hdfs,我试图减少mapreduce作业在数据流中的延迟,我希望使用hdfs api连续跟踪reducer部件xxxx文件的输出,而不是在作业完成后读取它。但我想知道这对hadoop作业是否安全?当您使用基于FileOutputFormat的输出格式(文本、序列文件etx)时,它们使用一个公共FileOutputCommitter,该文件负责在还原器输出成功/失败时提交或中止 在幕后,当您的reducer写入输出时,它会写入指定HDFS输出目录的_临时子目录 当reducer完成时,作业跟踪器将指示该r

我试图减少mapreduce作业在数据流中的延迟,我希望使用hdfs api连续跟踪reducer部件xxxx文件的输出,而不是在作业完成后读取它。但我想知道这对hadoop作业是否安全?

当您使用基于
FileOutputFormat
的输出格式(文本、序列文件etx)时,它们使用一个公共
FileOutputCommitter
,该文件负责在还原器输出成功/失败时提交或中止

在幕后,当您的reducer写入输出时,它会写入指定HDFS输出目录的_临时子目录

当reducer完成时,作业跟踪器将指示该reducer尝试的一个特定实例(记住,在推测执行中,reducer任务尝试可能会运行1次或多次)作为最终输出,并向输出提交者发送信号,以提交该版本的reducer输出(其他尝试将被中止)

当输出提交者提交一个尝试输出时,它只是将part-r-xxxxx文件从尝试临时目录移动到指定的输出目录

因此,记住这一点,当您在输出目录中看到part-r-*文件时,这些文件将被完全写入,并且可以安全地跟踪。因此,从这个意义上讲,您可以在处理减速机输出时获得跳跃(假设您在1000减速机插槽集群上运行10K减速机),但您还不能安排另一个map/reduce作业来处理此输出,因为只有已完成的减速机输出将在下一个map reduce作业中使用(当提交作业时,它只考虑当前可用的文件作为输入,它不会连续扫描在作业提交后出现的新文件)。


你也应该考虑到你的工作实际上在最后几个减速器中失败了。在这种情况下,你还想急切地处理那些在故障前完成的减速器输出,还是只想在整个工作完成时处理(这对大多数工作更有意义)。.

当您使用基于
FileOutputFormat
的输出格式(文本、序列文件etx)时,它们使用公共
FileOutputCommitter
,该文件负责在还原器输出成功/失败时提交或中止

在幕后,当您的reducer写入输出时,它会写入指定HDFS输出目录的_临时子目录

当reducer完成时,作业跟踪器将指示该reducer尝试的一个特定实例(记住,在推测执行中,reducer任务尝试可能会运行1次或多次)作为最终输出,并向输出提交者发送信号,以提交该版本的reducer输出(其他尝试将被中止)

当输出提交者提交一个尝试输出时,它只是将part-r-xxxxx文件从尝试临时目录移动到指定的输出目录

因此,记住这一点,当您在输出目录中看到part-r-*文件时,这些文件将被完全写入,并且可以安全地跟踪。因此,从这个意义上说,您可以在处理减速器输出时获得跳跃(假设您在1000个减速器插槽集群上运行10K减速器)-但是,您不能安排另一个MAP/Reduce作业来处理此输出,因为只有完成的减速器输出将用于下一个MAP还原作业(当作业提交时,它只考虑当前可用的文件作为输入,它将不会连续扫描在作业提交后出现的新文件)。

你也应该考虑到你的工作可能在最后几个约简中失败了。在这种情况下,你还想急切地处理那些在故障前完成的减速机输出,或者你只想处理整个任务是否完成(这对大多数工作更有意义)。