`

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页.r

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

    基于lucene和nutch的开源搜索引擎资料集合

    [硕士论文]_基于Nutch的垂直搜索引擎的分析与实现.pdf 一个例子学懂搜索引擎(lucene).doc 中文搜索引擎技术揭密.doc 九大开源搜索引擎介绍.txt 基于Nutch的搜索引擎技术.pdf 基于开源工具搭建小型搜索引擎.pdf 整合...

    Nutch入门.rar

    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 ...

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

    6、一对多的表关联在mapreduce中的应用(续) .................. - 26 - 7、InputSplit文件格式分析................................. - 32 - 8、短评:HDFS、MapReduce和HBase三者相辅相成、各有长处 ..... - 34 - ...

    Hadoop MapReduce Cookbook

    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云计算系列课程

    一套国外的Google云计算课程课件,其中涉及到Nutch、Mapreduce、Hadoop、GFS以及google一些其他技术的介绍

    Google云计算系列课程(7个)

    Google云计算系列课程 这是一套国外的Google云计算课程课件,其中涉及到Nutch、Mapreduce、Hadoop、GFS以及google一些其他技术的介绍。

    hadoop开发者文档

    6、一对多的表关联在mapreduce中的应用(续) .................. - 26 - 7、InputSplit文件格式分析................................. - 32 - 8、短评:HDFS、MapReduce和HBase三者相辅相成、各有长处 ..... - 34 - ...

    Hadoop.MapReduce.v2.Cookbook.2nd.Edition.1783285478

    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 ...

    Hadoop MapReduce v2 Cookbook(PACKT,2ed,2015)

    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开发者第一期入门专刊

    50 MapReduce 中的Shuffle 和Sort 分析 53 海量数据存储和计算平台的调试器研究 56 探讨MapReduce 模型的改进 58 运行eclipse 编译出的Hadoop 框架 59 表关联在MapReduce 上的实现 63 Hadoop 计算平台和Hadoop 数据...

    大数据分析技术基础教学课件3-大数据处理平台Hadoop.pptx

    2004年编写了开源的类似的系统NDFS 2004年Google发表了另一核心技术MapReduce的论文,他们将Nutch的主要算法移植到MapReduce和NDFS上 大数据分析技术基础教学课件3-大数据处理平台Hadoop全文共27页,当前为第6页。...

    search-1047:一个基于Nutch和Hadoop简单搜索引擎

    文本预处理作为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的垂直搜索引擎的分析与实现

    nutch-crawler:Apache Nutch fork 针对 Web 服务和数据发现进行了调整

    ElasticMapReduce 顾名思义,是一个“MapReduce 即服务”平台,允许用户创建可调整大小的 Hadoop 集群并运行 MapReduce 作业。 亚马逊 EMR 平台的一个关键优势是可以灵活地动态调整集群大小,并且可以使用 Spot ...

    Hadoop权威指南 第二版(中文版)

     在MapReduce中使用压缩  序列化  Writable接口  Writable类  实现定制的Writable类型  序列化框架  Avro  依据文件的数据结构  写入SequenceFile  MapFile 第5章 MapReduce应用开发  配置API  合并多个...

    Hadoop基础培训教程.pdf

    2003年Google发表论文介绍GFS文件系统,2004年HDFS(NDFS)项目建立 2004年Google发表论文介绍MapReduce算法,2005年Nutch中实现了 MapReduce算法 2006年2月Hadoop独立成Lucene的一个子项目,与此同时,Hadoop创 始人...

    Hadoop权威指南(中文版)2015上传.rar

    在MapReduce中使用压缩 序列化 Writable接口 Writable类 实现定制的Writable类型 序列化框架 Avro 依据文件的数据结构 写入SequenceFile MapFile 第5章 MapReduce应用开发 配置API 合并多个源文件 可变的扩展 配置...

Global site tag (gtag.js) - Google Analytics