`
billy_zh
  • 浏览: 61574 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Nutch中MapReduce的分析

阅读更多

出处: 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索引

 

 

分享到:
评论
1 楼 zxzheaven 2009-10-27  
我通过
http://www.matrix.org.cn/thread.shtml?topicId=e86b1e46-7920-11db-8da6-730c0471782d&forumId=32&fid=32
这篇文章过来的

想看看你说的:
取得文档中的关键字位置
取得文档中的关键字词频
这两篇文章,不过在你的blog上都没有找到,你那里还有备份的吗?

相关推荐

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

    这六个组件共同构成了一个完整的Hadoop生态系统,它们相互配合,从数据采集(Nutch)、存储(HDFS)、计算(MapReduce)、分析(Hive)、智能处理(Mahout)到实时访问(HBase),覆盖了大数据处理的全生命周期。...

    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入门.pdf

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

    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爬虫资料

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

    nutch的源代码解析

    Injector 类在 Nutch 中的作用是将输入的 URL 集合并入到 CrawlDB(爬取数据库)中。这个过程主要包括三个主要步骤: 1. **URL 格式化和过滤**:Injector 会接收一个包含 URL 的文本文件,对这些 URL 进行标准化...

    nutch-1.5.1源码

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

    nutch2.2.1

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

    搜索引擎nutch配置

    Nutch在运行过程中会产生大量的日志,通过分析这些日志,可以了解爬虫的运行状态,如抓取速率、错误信息等。 10. **优化与调试** 根据需求,可能需要调整Nutch的抓取策略、抓取深度、并发度等参数,以达到最佳...

    nutch1.2源码

    Nutch 1.2是该项目的一个稳定版本,提供了许多改进和优化,使得它在搜索引擎构建、数据分析等领域具有广泛应用。 一、Nutch概述 Nutch是由Apache软件基金会开发的开源Web爬虫项目,主要用于抓取互联网上的网页并...

    apache-nutch

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

    nutch1.6源码

    7. **Hadoop集成**:Nutch 1.6充分利用了Hadoop的MapReduce框架,将大型任务分解为小任务并在集群中并行处理。这使得Nutch能够处理海量的网页数据。 8. **配置与插件系统**:Nutch允许用户自定义配置和编写插件,以...

    apache-nutch-1.4

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

    基于Nutch 的插件系统的原理分析

    Nutch采用分布式文件系统HDFS(Hadoop Distributed File System)作为数据存储的基础,并利用Hadoop提供的MapReduce框架来进行数据处理。这样的设计不仅能够支持大规模的数据处理需求,还能够确保系统的稳定性和可靠...

Global site tag (gtag.js) - Google Analytics