Nutch简介

来源:互联网 发布:首届书法艺术网络大赛 编辑:程序博客网 时间:2024/05/16 17:16
  • Nutch是基于Java的开源搜索引擎。
  • Nutch有如下优点:简单,支持分布式爬虫。
  • Nutch爬虫的设计着重两个方面:
    • 存储过程
    • 爬虫过程
  • Nutch存储主要使用数据文件,数据文件有三类:
    • Web database,也叫WebDB,仅在爬虫中使用,用于存储爬虫抓取的网页之间的链接结构信息。WebDB存储了两种实体信息:
      • Page 描述网页的特征信息,包括网页内的链接数目、网页的抓取时间、网页权重等,相当于图的节点。
      • Link 描述两个Page之间的链接关系,相当于图的边。
    • segment 存储一次抓取过程中抓到的网页以及索引信息。
    • index 指爬虫抓取的所有网页的索引,由segment的索引合并处理得到
  • Nutch利用Lucene技术进行索引,Lucene的段与Nutch的段不同。Lucene的段是索引的一部分,而Nutch中段和索引是各自独立的。
  • 在 Nutch 中,抓取操作的实现是通过实现一系列子操作来完成的。 Nutch 提供了子命令行可以单独调用这些子操作:
    1. 创建一个新的 WebDB (admin db -create),并且将起始 URL 写入 WebDB (inject)。
    2. 根据 WebDB 生成预取列表并写入相应的 segment(generate)。
    3. 根据预取列表中的 URL 抓取网页(fetch)。
    4. 解析(parse)获得的网页。
    5. 根据网页内的 URL 更新 WebDB(updateDB)。
    6. 循环进行(2)~(5)步直至预先设定的抓取深度。
    7. 根据 WebDB 得到的网页评分和链接更新 segments (updatesegs)。
    8. 对所抓取的网页进行索引(index)。
    9. 在索引中丢弃有重复内容的网页和重复的 URL (dedup)。
    10. 将 segments 中的索引进行合并生成用于检索的最终 index(merge)。
  • Nutch 爬虫的详细工作流程是:在创建一个 WebDB 之后(步骤 1), 根据一些种子 URL开始启动“产生/抓取/更新”循环(步骤(2)~(6))。当这个循环彻底结束,爬虫根据抓取中生成的 segments 创建索引(步骤(7)~(10))。在重复清除 URL(步骤(9))之前,每个 segment 的索引都是独立的(步骤(8))。最终,各个独立的 segment 索引被合并为一个最终的索引 index(步骤(10))。
  • Nutch分布式文件系统的基础架构是HDFS,采用MapReduce算法进行分布式计算。
0 0
原创粉丝点击