nutch与hadoop

转载 2012年03月26日 09:17:05
Nutch是最早用MapReduce的项目 (Hadoop其实原来是Nutch的一部分),Nutch的plugin机制吸取了eclipse的plugin设计思路。在Nutch中 MapReduce编程方式占据了其核心的结构大部分。从插入url列表(Inject),生成抓取列表(Generate),抓取内容(Fetch), 分析处理内容(Parse),更新Crawl DB库(Update ),转化链接(Invert Links)一直到建立索引(Index)都是采用MapReduce来完成的。查看Nutch的源代码我们能够学到更多的 如何用MapReduce来处理我们编程中所遇到的问题。

Nutch从获取下载列表到建立索引的过程:

插入url列表到Crawl DB,引导下面的抓取程序
循环:
– 从Crawl DB生成一些url列表;
– 抓取内容;
– 分析处理抓取的内容;
– 更新Crawl DB库.
转化每个页面中外部对它的链接
建立索引

具体技术实现细节:

1。插入url列表(Inject)

MapReduce程序1:
目标:转换input输入为CrawlDatum格式.
输入: url文件
Map(line) → <url, CrawlDatum>
Reduce()合并多重的Url.
输出:临时的CrawlDatum文件.
MapReduce2:
目标:合并上一步产生的临时文件到新的DB
输入: 上次MapReduce输出的CrawlDatum
Map()过滤重复的url.
Reduce: 合并两个CrawlDatum到一个新的DB
输出:CrawlDatum
2。生成抓取列表(Generate)

MapReduce程序1:
目标:选择抓取列表
输入: Crawl DB 文件
Map() → 如果抓取当前时间大于现在时间 ,抓换成 <CrawlDatum, url>格式.
分发器(Partition) :用url的host保证同一个站点分发到同一个Reduce程序上.
Reduce:取最顶部的N个链接.
MapReduce程序2:
目标:准备抓取
Map() 抓换成 <url,CrawlDatum,>格式
分发器(Partition) :用url的host
输出:<url,CrawlDatum>文件
3。抓取内容(Fetch)


MapReduce:
目标:抓取内容
输入: <url,CrawlDatum>, 按host划分, 按hash排序
Map(url,CrawlDatum) → 输出<url, FetcherOutput>
多线程, 调用Nutch的抓取协议插件,抓取输出<CrawlDatum, Content>
输出: <url,CrawlDatum>, <url,Content>两个文件
4。分析处理内容(Parse)

MapReduce:
目标:处理抓取的能容
输入: 抓取的<url, Content>
Map(url, Content) → <url, Parse>
调用Nutch的解析插件,输出处理完的格式是<ParseText, ParseData>
输出: <url,ParseText>, <url,ParseData><url,CrawlDatum>.
5。更新Crawl DB库(Update )

MapReduce:
目标: 整合 fetch和parse到DB中
输入:<url,CrawlDatum> 现有的db加上fetch和parse的输出,合并上面3个DB为一个新的DB
输出: 新的抓取DB
6。转化链接(Invert Links)

MapReduce:
目标:统计外部页面对本页面链接
输入: <url,ParseData>, 包含页面往外的链接
Map(srcUrl, ParseData> → <destUrl, Inlinks>
搜集外部对本页面的链接Inlinks格式:<srcUrl, anchorText>
Reduce() 添加inlinks
输出: <url, Inlinks>
7。建立索引(Index)

MapReduce:
目标:生成Lucene索引
输入: 多种文件格式
parse处理完的<url, ParseData> 提取title, metadata信息等
parse处理完的<url, ParseText> 提取text内容
转换链接处理完的<url, Inlinks> 提取anchors
抓取内容处理完的<url, CrawlDatum> 提取抓取时间.
Map() 用ObjectWritable包裹上面的内容
Reduce() 调用Nutch的索引插件,生成Lucene Document文档
输出: 输出Lucene索引

相关文章推荐

一个大数据方案:基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎

网络爬虫架构在Nutch+Hadoop之上,是一个典型的分布式离线批量处理架构,有非常优异的吞吐量和抓取性能并提供了大量的配置定制选项。由于网络爬虫只负责网络资源的抓取,所以,需要一个分布式搜索引擎,...

Nutch+Hadoop集群搭建

来源:http://www.open-open.com/lib/view/open1328670771405.html 1、Apache Nutch    Apache Nutch是一个用...
  • memewry
  • memewry
  • 2012年07月16日 00:00
  • 579

Nutch+Hadoop集群搭建

转载自:http://www.open-open.com/lib/view/open1328670771405.html 1、Apache Nutch    Apache Nutch是一个...

NUTCH2.3 hadoop2.7.1 hbase1.0.1.1 solr5.2.1部署(三)

Precondition: hadoop 2.7.1 hbase 0.98.13 solr 5.2.1 / Apache Solr 4.8.1 http://archive.apache.org/di...

Nutch加Hadoop集群搭建

1、Apache Nutch    Apache Nutch是一个用于网络搜索的开源框架,它提供了我们运行自己的搜索引擎所需的全部工具,包括全文搜索和Web爬虫。 1.1、Nutch的组件结构 ...

hadoop+nutch+solr搜索引擎配

1.版本 (1)hadoop—>hadoop-1.2.1 (2)nutch—>nutch-1.6(release-1.6) (3)solr—>solr-4.22.测试所用系统 ubuntu ,...

Doug Cutting (Lucene-Nutch-Hadoop 创始人简介)

Doug Cutting (Lucene-Nutch-Hadoop 创始人简介) 发帖日期:2009-04-23 11:40:35 标签:Doug Cutting 开源 Hadoop Nut...

Doug Cutting (Lucene-Nutch-Hadoop 创始人访谈)

吃水不忘挖井人,介绍Doug Cutting大牛是十分有必要的。      最早,接触到搜索引擎,知道有个Nutch(开源搜索引擎),于是开始查看Nutch相关的资料,发现了Nutch的创始人D...

[Linux] Nutch 2.3.1+ Hbase + Hadoop + Solr 单机指南(三)

Linux下Nutch伪集群搭建简单指南 (Nutch2.3.1 + Solr4.10.1 + Hadoop2.5.2 + Hbase0.98) 1.Hbase的安装配置 2.Hbase的简单语句 ...
  • muslic
  • muslic
  • 2016年05月24日 21:47
  • 204
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:nutch与hadoop
举报原因:
原因补充:

(最多只允许输入30个字)