作者:马士华 发表于: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
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的垂直搜索引擎的分析与实现.pdf 一个例子学懂搜索引擎(lucene).doc 中文搜索引擎技术揭密.doc 九大开源搜索引擎介绍.txt 基于Nutch的搜索引擎技术.pdf 基于开源工具搭建小型搜索引擎.pdf 整合...
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 ...
6、一对多的表关联在mapreduce中的应用(续) .................. - 26 - 7、InputSplit文件格式分析................................. - 32 - 8、短评:HDFS、MapReduce和HBase三者相辅相成、各有长处 ..... - 34 - ...
后来 Google 发表了关于 GFS 与 MapReduce 的论文,他们把论文中的思想应用到了 Nutch 中。 Hadoop 的安装和配置是非常简单的。首先,需要在每台机器上安装 JDK 1.6 和 OpenSSH。安装 JDK 1.6 是一个很简单的过程,...
Starting with installing Hadoop YARN, MapReduce, HDFS, and other Hadoop ecosystem components, with this book, you will soon learn about many exciting topics such as MapReduce patterns, using Hadoop to...
一套国外的Google云计算课程课件,其中涉及到Nutch、Mapreduce、Hadoop、GFS以及google一些其他技术的介绍
Google云计算系列课程 这是一套国外的Google云计算课程课件,其中涉及到Nutch、Mapreduce、Hadoop、GFS以及google一些其他技术的介绍。
6、一对多的表关联在mapreduce中的应用(续) .................. - 26 - 7、InputSplit文件格式分析................................. - 32 - 8、短评:HDFS、MapReduce和HBase三者相辅相成、各有长处 ..... - 34 - ...
You will learn how to take advantage of Hadoop ecosystem projects including Hive, HBase, Pig, Mahout, Nutch, and Giraph and be introduced to deploying in cloud environments. Finally, you will be ...
Starting with installing Hadoop YARN, MapReduce, HDFS, and other Hadoop ecosystem components, with this book, you will soon learn about many exciting topics such as MapReduce patterns, using Hadoop to...
在 Hadoop 中,Nutch 项目的全部数据处理都构建在 Hadoop 之上,详见 Scalable Computing with Hadoop。程序员可以使用 Hadoop 实现分布式的 Grep,简单对输入文件进行逐行的正则匹配,如果符合就将该行打印到输出...
50 MapReduce 中的Shuffle 和Sort 分析 53 海量数据存储和计算平台的调试器研究 56 探讨MapReduce 模型的改进 58 运行eclipse 编译出的Hadoop 框架 59 表关联在MapReduce 上的实现 63 Hadoop 计算平台和Hadoop 数据...
2004年编写了开源的类似的系统NDFS 2004年Google发表了另一核心技术MapReduce的论文,他们将Nutch的主要算法移植到MapReduce和NDFS上 大数据分析技术基础教学课件3-大数据处理平台Hadoop全文共27页,当前为第6页。...
文本预处理作为PageRank的输入SequenceFileRead.java: 将linkdb/data(SequenceFile Format)转换成linkdb_data(Text Format).OutLinks.java(MapReduce): 将linkdb_data转换成OutLinks_db(Text Format: 每行的第一个...
1、基于Lucene的Web搜索引擎实现 2、基于MapReduce的分布式智能搜索引擎框架研究 3、基于Nutch的垂直搜索引擎的分析与实现
ElasticMapReduce 顾名思义,是一个“MapReduce 即服务”平台,允许用户创建可调整大小的 Hadoop 集群并运行 MapReduce 作业。 亚马逊 EMR 平台的一个关键优势是可以灵活地动态调整集群大小,并且可以使用 Spot ...
在MapReduce中使用压缩 序列化 Writable接口 Writable类 实现定制的Writable类型 序列化框架 Avro 依据文件的数据结构 写入SequenceFile MapFile 第5章 MapReduce应用开发 配置API 合并多个...