如何向Hadoop作业报告进度以避免任务因超时而终止



1)我有一个仅映射Hadoop作业,它将数据流式传输到Cassandra集群。

2) 有时流式传输需要10分钟以上的时间,而且由于没有向作业报告进度,因此会终止任务。

3) 我试着用context.progress()方法报告进度,但没有帮助。

是否还需要向hadoop作业报告进度?

我写了一个示例代码如下,以模拟这个问题,并使用以下代码。

Thread.sleep(360000);
context.progress();
Thread.sleep(360000);

它失败,并显示以下错误消息

2006年2月12日11:40:25映射信息。JobClient:任务Id:attempt_20122061119_0001_m_ 000001_1,状态:任务失败尝试_201202061119_0001_m_ 000001_1无法报告601的状态秒。杀人!

请参阅此问题:
如何修复";任务尝试_201104251139_0295_r_ 000006_0在600秒内未能报告状态"

mapred.task.timeout属性设置为更高的值是解决此问题的最简单方法。

context.progress()应该可以工作,但可能面临以下问题:https://issues.apache.org/jira/browse/MAPREDUCE-1905,在以后的版本中进行了修复。

相关内容

  • 没有找到相关文章

最新更新