hadoop失败的原因是什么?

xwbd5t1u  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(522)


在执行reduce任务时,它经常出现在hadoop作业中。出现此问题的一些原因可能是reducer很长时间没有编写上下文,因此需要在代码中添加context.progress()。但是在我的reduce函数中,上下文经常被编写。下面是我的reduce函数:

  1. public void reduce(Text key, Iterable<Text> values, Context context) throws
  2. IOException,InterruptedException{
  3. Text s=new Text();
  4. Text exist=new Text("e");
  5. ArrayList<String> T=new ArrayList<String>();
  6. for(Text val:values){
  7. String value=val.toString();
  8. T.add(value);
  9. s.set(key.toString()+"-"+value);
  10. context.write(s,exist);
  11. }
  12. Text need=new Text("n");
  13. for(int i=0;i<T.size();++i){
  14. String a=T.get(i);
  15. for(int j=i+1;j<T.size();++j){
  16. String b=T.get(j);
  17. int f=a.compareTo(b);
  18. if(f<0){
  19. s.set(a+"-"+b);
  20. context.write(s,need);
  21. }
  22. if(f>0){
  23. s.set(b+"-"+a);
  24. context.write(s,need);
  25. }
  26. }
  27. }
  28. }

您可以看到,上下文经常写入循环中。失败的原因是什么?我该怎么处理?

pdtvr36n

pdtvr36n1#

您的任务需要600多秒才能完成。
从apache文档页面,您可以找到更多详细信息。
mapreduce.task.timeout
600000(以毫秒为单位的默认值)
如果任务既不读取输入,也不写入输出,也不更新其状态字符串,则任务终止前的毫秒数。值为0将禁用超时。
可能的选项:
微调您的应用程序以在600秒内完成任务

增加参数的超时 mapreduce.task.timeout 在mapred-site.xml中

相关问题