`

nutch 中的MapReduce详细分析

阅读更多

作者:马士华 发表于:2008-03-06 20:11 最后更新于:2008-03-07 12:44
版权声明 :可以任意转载,转载时请务必以超链接形式标明文章原始出处 和作者信息。
http://www.hadoop.org.cn/mapreduce/nutch-mapreduce/

 

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


分享到:
评论

相关推荐

    大数据技术 Hadoop开发者第二期 Nutch MapReduce HDFS Hive Mahout HBase 共64页.r

    本资料主要涵盖了Hadoop开发者第二期的学习内容,包括Nutch、MapReduce、HDFS、Hive、Mahout以及HBase这六个关键组件,共计64页的深度解析。 1. **Nutch**:Nutch是一款开源的网络爬虫项目,它主要用于抓取互联网上...

    nutch的源代码解析

    总的来说,Nutch 的 Injector 部分是整个爬取流程的起点,它负责将输入的 URL 数据转化为可处理的形式,并且初始化这些 URL 在 CrawlDB 中的状态,为后续的抓取、解析和索引等步骤做好准备。通过理解这个过程,...

    Nutch入门教程.pdf

    以上内容构成了Nutch入门教程的核心知识点,从简介、安装配置、初体验、基本原理、分析方法、分布式文件系统以及应用等多方面,详细介绍了Nutch框架及其使用方法,为对搜索引擎感兴趣的用户提供了一个全面的学习资源...

    nutch 初学文档教材

    4. nutch基本原理分析...23 4.1 nutch的基本组成.23 4.2 nutch工作流程.....23 5. nutch工作流程分析...25 5.1 爬虫...25 5.1.1 工作策略...25 5.1.2 工作流程分析....25 5.1.3 其它..27 5.2 索引...27 5.2.1 索引...

    nutch

    Nutch 利用 Hadoop MapReduce 进行分布式任务执行,同时,HBase 通常用于存储 Nutch 的索引数据,提供实时查询功能。 **Nutch 的使用** 学习 Nutch 需要掌握 Hadoop 相关知识,包括配置 Hadoop 环境、理解 ...

    nutch开发资料 搜索引擎

    5. **Nutch源码结构**:压缩包中的"src"目录很可能包含了Nutch的源代码,这包括了各种模块,如爬虫模块(fetcher)、解析模块(parser)、索引模块(indexer)等。开发者可以通过阅读源码理解其内部机制,并进行二次...

    apache-nutch-2.3

    在 Apache Nutch 2.3 中,主要涉及以下几个关键知识点: 1. **网络爬虫架构**:Nutch 采用分层架构设计,包括爬虫、解析器、索引器等多个组件。这些组件协同工作,实现了从发现网页到建立索引的全过程。 2. **URL...

    Nutch入门教程 高清 带书签

    Nutch是Apache软件基金会开发的一款开源搜索引擎项目,主要用于网络数据抓取和索引。这个“Nutch入门教程 高清 带书签”的资源...这份高清带书签的教程,将是你学习Nutch的最佳伙伴,帮助你在实践中逐步掌握这一技术。

    nutch入门.pdf

    Nutch在开发过程中借鉴了学术派和工业派的知识,其核心部分使用MapReduce模型重新实现,展示了分布式处理模型的应用,并吸引了大量研究者尝试新的搜索算法。 扩展性:Nutch的灵活性很高,允许用户根据自己的需求...

    Nutch+solr + hadoop相关框架搭建教程

    Nutch 使用 Hadoop MapReduce 模型来并行处理任务,如网页抓取、解析、索引等。通过 Nutch 脚本,我们可以将 Apache-nutch-1.6.job 提交给 Hadoop 的 JobTracker 进行执行。 【Solr】 Apache Solr 是一个基于 ...

    nutch crawl代码解析

    然后,`NutchJob(conf)` 被用来创建一个 `JobConf` 对象,这是 Hadoop MapReduce 中的配置对象,它包含了 Nutch 抓取任务的具体配置。`JobConf` 用于设置抓取过程中的各种参数,如默认的抓取线程数、存储路径等。 ...

    nutch1.2源码

    Nutch利用Hadoop的MapReduce功能进行分布式爬取、解析和索引。在Nutch 1.2中,这一集成更加紧密,提高了数据处理的效率和可扩展性。MapReduce将大型任务分解为小的子任务,分发到多台机器上并行处理,然后合并结果,...

    nutch-1.5.1源码

    源码中可以看到如何使用MapReduce处理抓取、索引和搜索任务。 6. **配置与插件(Configuration & Plugins)**:Nutch允许开发者通过配置文件定制爬虫的行为,并提供了一套插件系统,方便扩展其功能。例如,你可以...

    nutch2.2.1

    Nutch 2.2.1 是一个开源的网络爬虫项目,主要用于收集、索引和分析互联网上的数据。这个未编译的代码包是给那些对Nutch不太熟悉的开发者准备的,让他们有机会深入理解Nutch的工作原理并进行自定义开发。 Nutch的...

    分布式搜索引擎nutch开发

    Nutch的工作流程由一系列工作阶段组成,每个阶段都是Hadoop MapReduce任务: - **Segments生成**:抓取的网页被分组到Segment中,每个Segment包含一组网页。 - **Fetcher**:下载网页内容。 - **Parser**:解析...

    开发基于 Nutch 的集群式搜索引擎

    自Nutch 0.8.0版本起,它完全运行在Hadoop平台上,这使Nutch能够利用Hadoop的分布式文件系统(HDFS)以及MapReduce编程模型来实现大规模数据处理能力。Hadoop不仅提供了分布式文件存储功能,还实现了Google的...

    nutch入门教程

    ### Nutch入门教程知识点解析 #### 1. Nutch简介 **1.1 什么是Nutch** Nutch是一个开源的搜索引擎框架,完全基于Java开发,旨在帮助用户构建和运行自己的搜索引擎。它提供了一系列的工具和服务,使用户能够从...

    nutch爬虫资料

    参考书中可能涉及的主题有Nutch配置、爬虫优化、抓取策略、数据存储和检索机制。例如,可能会讲解如何定制Nutch的配置文件以适应特定的抓取需求,如何避免重复抓取和IP封锁问题,以及如何调整抓取速度和深度。此外,...

    apache-nutch-1.4

    - **MapReduce**:Nutch的大部分处理任务都是通过Hadoop的MapReduce模型执行的,实现了并行处理和容错性。 4. **配置与插件体系** - **配置文件**:Nutch的运行依赖于一系列配置文件,如`conf/nutch-site.xml`,...

    apache-nutch

    2. **MapReduce**:Nutch 把爬虫任务分解为多个MapReduce作业,分发到集群中的各个节点执行,提高处理速度。 3. **Gora持久化**:Nutch 使用Gora进行数据持久化,将抓取的网页数据存储在HDFS上。 **三、Nutch 索引...

Global site tag (gtag.js) - Google Analytics