简体   繁体   English

Hadoop:为什么编写一个精简的精简任务会超时?

[英]Hadoop: Why might a furiously writing reduce task be timed out?

I have a Hadoop reduce task that reads its input records in batches and does a lot of processing and writes a lot of output for each input batch. 我有一个Hadoop reduce任务,该任务分批读取其输入记录,并进行大量处理,并为每个输入批处理写入大量输出。 I have read that Hadoop considers writing output to be "progress" for the purpose of killing hung tasks. 我已经读到 Hadoop认为将输出写为“进度”是为了杀死挂起的任务。 However, despite constantly writing lots of output, my task is still being timed out and killed. 但是,尽管不断编写大量输出,但我的任务仍然超时并被终止。 So: how can I find out when Hadoop thinks a task last reported progress? 那么:如何确定Hadoop认为任务上次报告进度的时间? Why would I have to call context.progress() with every context.write() ? 为什么我会打电话给context.progress()context.write() Are there any situations where writing is not counted as progress? 在任何情况下写作都不算进步吗? (For instance, my keys are NullWritable s.) I'm using Cloudera CDH3u1 on CentOS 5.7 if that makes any difference. (例如,我的密钥是NullWritable 。)如果这有任何区别,我正在CentOS 5.7上使用Cloudera CDH3u1。

Not sure why the tasks are getting killed, but you could increase the value mapreduce.task.timeout , it's defaulted to 600000 ms. 不知道为什么任务被杀死,但是您可以增加值mapreduce.task.timeout ,默认值为600000 ms。 This might not be a good practice as rouge tasks will run for more time because of the increase in the timeout value. 这可能不是一个好习惯,因为超时值会增加,胭脂任务将运行更多时间。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM