当前位置:  开发笔记 > Android > 正文

如何修复"任务尝试_201104251139_0295_r_000006_0无法报告状态600秒".

如何解决《如何修复"任务尝试_201104251139_0295_r_000006_0无法报告状态600秒".》经验,为你挑选了3个好方法。

我写了一个mapreduce作业来从数据集中提取一些信息.数据集是用户对电影的评分.用户数约为250K,电影数约为300k.地图的输出是*> and *>.在reducer中,我将处理这些对.

但是当我运行这个工作时,映射器按预期完成,但是reducer总是抱怨

Task attempt_* failed to report status for 600 seconds.

我知道这是由于无法更新状态,所以我context.progress()在我的代码中添加了一个调用,如下所示:

int count = 0;
while (values.hasNext()) {
  if (count++ % 100 == 0) {
    context.progress();
  }
  /*other code here*/
}

不幸的是,这没有帮助.仍有许多减少任务失败.

这是日志:

Task attempt_201104251139_0295_r_000014_1 failed to report status for 600 seconds. Killing!
11/05/03 10:09:09 INFO mapred.JobClient: Task Id : attempt_201104251139_0295_r_000012_1, Status : FAILED
Task attempt_201104251139_0295_r_000012_1 failed to report status for 600 seconds. Killing!
11/05/03 10:09:09 INFO mapred.JobClient: Task Id : attempt_201104251139_0295_r_000006_1, Status : FAILED
Task attempt_201104251139_0295_r_000006_1 failed to report status for 600 seconds. Killing!

BTW,错误发生在reduce to copy阶段,日志说:

reduce > copy (28 of 31 at 26.69 MB/s) > :Lost task tracker: tracker_hadoop-56:localhost/127.0.0.1:34385

谢谢您的帮助.



1> wlk..:

最简单的方法是设置此配置参数:


  mapred.task.timeout
  1800000 

mapred-site.xml


这实际上不是一个修复.如果扩展任务,这是一种解决方法,会遇到同样的问题.

2> 小智..:

最简单的另一种方法是在程序内部设置作业配置

 Configuration conf=new Configuration();
 long milliSeconds = 1000*60*60; 

**在设置之前,请检查jobtracker GUI中的Job文件(job.xml)文件,了解正确的属性名称,无论是mapred.task.timeout还是mapreduce.task.timeout...在运行作业时,再次检查作业文件中是否根据设置的值更改了该属性.



3> keelar..:

在较新的版本中,参数的名称已更改mapreduce.task.timeout为此链接(搜索task.timeout)中所述.此外,您还可以按照上面的链接中所述禁用此超时:

如果任务既不读取输入,也不写入输出,也不更新其状态字符串,则终止任务前的毫秒数.值为0将禁用超时.

以下是以下示例设置mapred-site.xml:


  mapreduce.task.timeout
  0 

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有