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进行集成。 Hadoop是一个开源框架,用于分布式存储和处理大数据。它借鉴了Google的MapReduce、Google File System和BigTable技术。Hadoop的设计...
Nutch 与 Hadoop 密切相关,因为 Nutch 是 Hadoop 生态系统的一部分。Hadoop 提供了分布式计算框架,使得 Nutch 能够处理海量的网页数据。Nutch 利用 Hadoop MapReduce 进行分布式任务执行,同时,HBase 通常用于...
6. **Nutch与Hadoop的连接**:Nutch通过特定的脚本将任务提交给Hadoop的JobTracker,从而实现与Hadoop的集成。这个过程通常涉及到Nutch提供的脚本和命令,如提交作业脚本`apache-nutch-1.6.job`给Hadoop JobTracker...
Nutch与Hadoop紧密结合,利用分布式计算能力处理大规模数据,适合构建大规模的搜索引擎系统。 二、Nutch工作流程 1. **种子URL**:启动Nutch时,需要提供一批起始URL(种子URL),Nutch将从这些URL开始抓取。 2. **...
Apache Nutch是开源的网络爬虫项目,专为大规模数据抓取设计,它与Hadoop分布式计算框架紧密集成,能够处理海量网页数据。Nutch 1.2是该项目的一个稳定版本,提供了许多改进和优化,使得它在搜索引擎构建、数据分析...
#### 一、Nutch与Hadoop、Tika、Gora的关系 **Nutch**是一个开源的Web抓取框架,它不仅能够帮助开发者抓取网络上的数据,还促进了多个重要开源项目的诞生和发展。通过Nutch项目,衍生出了几个在大数据处理领域非常...
此外,Nutch与Hadoop的结合是其强大之处。了解Hadoop的MapReduce模型、HDFS文件系统以及YARN资源调度器,能帮助你更好地理解和优化Nutch的分布式爬取过程。 总之,这份“nutch爬虫资料”涵盖了从理论到实践的全面...
2. **Nutch与Hadoop的结合** Nutch充分利用了Hadoop分布式计算框架,能够处理大规模的网页抓取任务。它将爬虫的工作分解成小任务,分布在多台机器上并行执行,大大提高了数据处理速度。 3. **二次开发与插件系统**...
Nutch与Hadoop结合,利用其分布式存储和计算能力,可以高效地处理大量网页数据,实现大规模的网页抓取和分析。 2. **MapReduce**:MapReduce是Hadoop的计算模型,它将复杂的大规模数据处理任务分解为两个阶段——...
**Apache Nutch 1.7 学习...同时,Nutch与Hadoop结合可以处理大规模的数据抓取和索引,这在大数据领域有着广泛的应用。通过深入学习,你可以掌握网络爬虫的基本技术和搜索引擎的基础架构,为你的IT事业打下坚实的基础。
通过 Nutch 脚本,我们可以将 Apache-nutch-1.6.job 提交给 Hadoop 的 JobTracker 进行执行。 【Solr】 Apache Solr 是一个基于 Lucene 的全文搜索引擎服务器,用于高效地存储和检索大量文本数据。在 Nutch 框架中...
5. **Hadoop集成**:Nutch通常与Hadoop结合使用,处理大规模数据。需要在Nutch配置文件中指定Hadoop的路径,确保Hadoop已经正确安装并启动。Nutch与Hadoop的集成涉及到修改`conf/nutch-site.xml`文件。 6. **配置...
Nutch与Hadoop紧密集成,能够充分利用分布式计算的优势,处理海量数据。在本篇中,我们将深入探讨Nutch的开发细节,包括其架构、工作流程、配置以及如何进行定制化开发。 1. **Nutch架构** Nutch的核心架构分为四...
2. **Hadoop 集成**:Nutch 与 Hadoop 深度集成,利用 Hadoop 的分布式计算能力处理大规模数据。 3. **插件系统**:Nutch 具有强大的插件体系,允许用户根据需求自定义爬虫行为,例如解析不同格式的网页、定制索引...
使用 Apache Nutch 抓取 40 个(体育和教育)域的网页。 倒排索引是使用 Apache Hadoop 从爬取的数据中构建的。 爬取的数据和倒排索引保存在nosql MongoDB数据库中,响应速度更快,扩展性更强。 Web 应用程序使用...
Nutch 与 Hadoop 紧密集成,利用分布式计算的优势处理海量网页数据。 在"Nutch.zip"压缩包中,包含的是"Nutch-master"源代码,这通常是Nutch项目的最新版本源码。通过这个源码,我们可以深入了解Nutch的工作原理和...
Nutch与Hadoop的集成,为大数据环境下的网络信息抓取和搜索提供了强大工具。 **四、学习Nutch的资源** 《Nutch入门教程》这本书是一个很好的起点,它详细介绍了Nutch的内部结构和算法,包括Nutch的配置、部署、...
1 Hadoop介绍 2 Hadoop在国内应用情况 3 Hadoop源代码eclipse编译教程 7 在Windows上安装Hadoop教程 13 在Linux上安装Hadoop...28 Nutch 与Hadoop的整合与部署 31 在Windows eclipse上单步调试Hive教程 38 Hive应用介绍