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索引

Lucene、Nutch和Hadoop三者之间的关系

1.Lucene、Nutch和Hadoop三者之间的关系         Hadoop 是一个开源的可运行于大规模集群上的分布式并行编程框架,由于分布式存储对于分布式编程来说是必不可少的,这个框架中...
  • wangjianno2
  • wangjianno2
  • 2014年08月03日 23:33
  • 730

(转)Lucene,Nutch,Hadoop 之间有什么关系?

描述的比较详细~ 1. Nutch是基于Lucene的,Lucene是提供全文文本搜索的开源函数库,Lucene为Nutch提供了文本索引和搜索的API。 2.Hadoop起源于Nutch项目...
  • zrunlin
  • zrunlin
  • 2013年08月26日 15:48
  • 1104

在Hadoop上部署nutch 及nutch相关

nutch启动入口,bin/crawl  调用 bin/nutch。nutch系列学习笔记,详细解读nutch每个tool:http://blog.csdn.net/gobitan/article/c...
  • zhaoyue007101
  • zhaoyue007101
  • 2015年11月04日 11:26
  • 1471

基于Nutch和Hadoop的简易搜索引擎

最近和寝室的同学一起搭建了Hadoop的集群,实现了一个简易的本地搜索引擎,并且将其开源到了github上:https://github.com/ifuding/search-1047,接下来的几篇博...
  • dingzuoer
  • dingzuoer
  • 2015年04月22日 15:35
  • 1249

[Nutch]Hadoop单机伪分布式模式的使用(deploy)

在上一篇博文我们对Nutch进行了hadoop的配置,那么本文就对nutch的deploy模式的使用进行说明。...
  • Kandy_Ye
  • Kandy_Ye
  • 2016年05月22日 10:53
  • 3620

hadoop2.7.1+nutch2.3+mongodb+solr5.2.1的单机配置

hadoop2.7.1+nutch2.3+mongodb+solr5.2.1的单机配置
  • feihuadao
  • feihuadao
  • 2015年08月18日 12:47
  • 2766

【Apache Nutch系列】Nutch2.2+hadoop+hbase+zookeeper环境部署

1、下载数据包 wget http://archive.apache.org/dist/hbase/hbase-0.90.4/hbase-0.90.4.tar.gz wget http://arc...
  • WeiJonathan
  • WeiJonathan
  • 2013年08月22日 13:26
  • 4606

把Nutch爬虫部署到Hadoop集群上

原文地址:http://cn.soulmachine.me/blog/20140204/ 把Nutch爬虫部署到Hadoop集群上 Feb 4th, 2014 | Comments ...
  • fz2543122681
  • fz2543122681
  • 2014年07月24日 00:06
  • 1617

使用 Hadoop,Nutch ,Hbase,Solr 搭建搜索引擎之Nutch2.2.1

这篇文章小编讲解Nutch2.3的搭建,前提是已经搭建好了hadoop,以及Hbase,还没有搭建好的可以参考小编的这两篇文章。     Hadoop搭建:http://blog.csdn.net/s...
  • shuaigexiaobo
  • shuaigexiaobo
  • 2017年08月23日 15:07
  • 291

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

编译部署Nutch2.3,Precondition: hadoop 2.7.1 Nutch 2.3 hbase 1.0.1.1 / hbase 0.98.13 solr 4.8.1 Linux ver...
  • butyesbutno
  • butyesbutno
  • 2015年07月23日 14:36
  • 1788
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:nutch与hadoop
举报原因:
原因补充:

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