nutch搏斗之一

问题描述: 
在用nutch1.0做generate 包括5亿url的crawldb时,它默认按照64M分块,分成777个map task,在运行的后期出现 
Could
not find
taskTracker/jobcache/job_200903231519_0017/attempt_200903231519_0017_r_000051_0/output/file.out
in any of the configured local directories 
异常。 
解决办法: 
减小task数目,改成按照crawldb里面文件个数划分的策略:

  1. public static class InputFormat extends SequenceFileInputFormat<WritableComparable, Writable> {
  2. /** Don't split inputs, to keep things polite. */
  3. public InputSplit[] getSplits(JobConf job, int nSplits)
  4. throws IOException {
  5. FileStatus[] files = listStatus(job);
  6. FileSystem fs = FileSystem.get(job);
  7. InputSplit[] splits = new InputSplit[files.length];
  8. for (int i = 0; i < files.length; i++) {
  9. FileStatus cur = files[i];
  10. splits[i] = new FileSplit(cur.getPath(), 0,
  11. cur.getLen(), (String[])null);
  12. }
  13. return splits;
  14. }
  15. }

这次出现了新问题,有数个task因为十分钟无反应而导致整个任务failed 
解决办法: 
修改hadoop-site.xml

  1. <property>
  2. <name>mapred.task.timeout</name>
  3. <value>3600000</value>
  4. <description>The number of milliseconds before a task will be
  5. terminated if it neither reads an input, writes an output, nor
  6. updates its status string.
  7. </description>
  8. </property>

总结: 
大与小,多与少,长与短,在不同的情况下是不断变化的,对于大数据量而言,更要跟具实际情况灵活变化,所谓运用之刀,存乎一心是也!

nutch搏斗之一的更多相关文章

  1. Nutch搜索引擎(第1期)_ Nutch简介及安装

    1.Nutch简介 Nutch是一个由Java实现的,开放源代码(open-source)的web搜索引擎.主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的接口来对其网页数据进行查询的一 ...

  2. Nutch插件原理

    本文目的:讲解Nutch的插件运行时加载原理

  3. Apache Nutch build文件解析

    本文目的:分析Apache Nutch 1.9的build.xml文件,从而让读者了解nutch的build全部流程

  4. Nutch主要类代码分析之一(Injector)

    Injector(org.apache.nutch.crawl.Injector): 输入:种子列表文件所在的目录 输出:crawldb(保存URL以及其相应信息的数据库) 作用:把种子URL注入到c ...

  5. 读取nutch爬取内容方法

    读取nutch内容有如下两种方法: 1 通过Nutch api SegmentReader读取. public Content readSegment(String segPath,String ur ...

  6. Nutch源码阅读进程5---updatedb

    看nutch的源码仿佛就是一场谍战片,而构成这精彩绝伦的谍战剧情的就是nutch的每一个从inject->generate->fetch->parse->update的环节,首 ...

  7. Nutch源码阅读进程4---parseSegment

    前面依次看了nutch的准备工作inject和generate部分,抓取的fetch部分的代码,趁热打铁,我们下面来一睹parse即页面解析部分的代码,这块代码主要是集中在ParseSegment类里 ...

  8. Nutch源码阅读进程3---fetch

    走了一遍Inject和Generate,基本了解了nutch在执行爬取前的一些前期预热工作,包括url的过滤.规则化.分值计算以及其与mapreduce的联系紧密性等,自我感觉nutch的整个流程是很 ...

  9. Nutch源码阅读进程2---Generate

    继之前仓促走完nutch的第一个流程Inject后,再次起航,Debug模式走起,进入第二个预热阶段Generate~~~   上期回顾:Inject主要是将爬取列表中的url转换为指定格式<T ...

随机推荐

  1. C++ template error: undefined reference to XXX

    一般来说,写C++程序时推荐“类的声明和实现分离”,也就是说一个类的声明放在example.h文件中,而这个类的实现放在example.cpp文件中,这样方便管理,条理清晰. 但是如果类的声明用到了模 ...

  2. 在O(1)时间删除指定链表结点

    #region 在O(1)时间删除指定链表结点 /// <summary> /// 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点. /// </summa ...

  3. PreTranslateMessage和TranslateMessage区别

    PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里,比较常用,当需要在MFC之前处理某些消息时,常常要在这里添加代码. ...

  4. 五种情况下会刷新控件状态(刷新所有子FWinControls的显示)——从DFM读取数据时、新增加子控件时、重新创建当前控件的句柄时、设置父控件时、显示状态被改变时

    五种情况下会刷新控件状态(刷新控件状态才能刷新所有子FWinControls的显示): 在TWinControls.PaintControls中,对所有FWinControls只是重绘了边框,而没有整 ...

  5. MFC 用gdi绘制填充多边形区域

    MFC 用gdi绘制填充多边形区域 这里的代码是实现一个三角形的绘制,并用刷子填充颜色 在OnPaint()函数里面 运用的是给定的三角形的三个点,很多个点可以绘制多边形 CBrush br(RGB( ...

  6. Linux Shell常用技巧(一) RE

    一.    特殊文件: /dev/null和/dev/tty Linux系统提供了两个对Shell编程非常有用的特殊文件,/dev/null和/dev/tty.其中/dev/null将会丢掉所有写入它 ...

  7. php 和thinkphp 对excel操作

    php对excel的操作主要通过引入 excel_reader2.php 或者是PHPExcel 类进行   两个文件自行下载 php 对其读操作: 文件目录结构 excel_reader2.php ...

  8. hdu 4715 Difference Between Primes (打表 枚举)

    Difference Between Primes Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  9. CorePlot学习

    阅读这篇文章,指出它在国外    原文地址:https://github.com/core-plot/core-plot/wiki/High-Level-Design-Overview 强烈推荐阅读该 ...

  10. Android Studio中如何打JAR包

    Android Studio中对于library类型的Moudle,默认打出来的是AAR包, 但有时候我们的SDK还需要共享给一些其他eclipse的项目使用,这样我们就需要输出JAR包, 可以通过在 ...