我有一个Hadoop reduce任务,它分批读取其输入记录,并对每个输入批进行大量处理和写入大量输出。我读到Hadoop认为写输出是一种"进步",目的是杀死挂起的任务。然而,尽管不断写入大量输出,我的任务仍然超时并被终止。那么:我怎样才能知道Hadoop认为任务上次报告的进度是什么时候呢?为什么每个context.write()
都叫context.progress()
?是否存在写作不算作进步的情况?(例如,我的钥匙是NullWritable
s。)我在CentOS 5.7上使用Cloudera CDH3u1,如果这有任何区别。
不确定为什么任务会被终止,但是您可以增加mapreduce.task的值。超时,默认为60000ms。这可能不是一个好的做法,因为由于超时值的增加,rouge任务将运行更长时间。