我有一个 Hadoop reduce 任务,它分批读取其输入记录并进行大量处理,并为每个输入批处理写入大量输出。我有 read Hadoop 认为写入输出是为了终止挂起任务的“进度”。然而,尽管不断写入大量输出,但我的任务仍会超时并被终止。那么:我如何才能知道 Hadoop 认为任务上次报告进度的时间?为什么我必须对每个 context.write()
调用 context.progress()
?有没有写作不算进步的情况? (例如,我的 key 是 NullWritable
。)我在 CentOS 5.7 上使用 Cloudera CDH3u1,如果这有什么不同的话。
最佳答案
不确定为什么任务会被终止,但您可以增加值 mapreduce.task.timeout ,默认为 600000 毫秒。这可能不是一个好的做法,因为由于超时值的增加,rouge 任务将运行更多时间。
关于java - Hadoop:为什么一个狂写的reduce任务会超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7651344/