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

转载于:https://www.cnblogs.com/shawnliu/archive/2008/06/16/1223377.html

Nutch中MapReduce的分析[zz]相关推荐

  1. nutch2.3.1 mysql_Nutch中MapReduce的分析

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

  2. YARN中的失败分析

    YARN中的失败分析 对于在YARN中运行的MapReduce程序,需要考虑以下几种实体的失败 任务.application master.节点管理器.资源管理器 1. 任务运行失败 任务运行失败类似 ...

  3. 爬虫技术python nutch_基于Nutch的python爬虫分析

    1.创建一个新的WebDb (admin db -create): 2.将抓取起始URLs写入WebDB中 (inject): 3.根据WebDB生成fetchlist并写入相应的segment(ge ...

  4. MongoDB中mapReduce的使用

    MongoDB中mapReduce的使用 制作人:全心全意 mapReduce的功能和group by的功能类似,但比group by处理的数据量更大 使用示例: var map = function ...

  5. 论电子计算机在审计中的应用,计算机技术在审计中的应用领域分析.doc

    计算机技术在审计中的应用领域分析.doc 计算机技术在审计中的应用 [ ]审计工作作为我WW民经济屮的重要的一个环节,由于有大量的数据需耍处理, 使得计算机技术在审计领域的大规模推广具有很强的实践意义 ...

  6. R语言效用分析 ( 效能分析、Power analysis)、除了pwr包之外还有其它包、例如、基因研究中的效能分析、MBESS包可用于各种形式的效能分析和最少样本量确定、其他效用分析包的简要介绍

    R语言效用分析 ( 效能分析.Power analysis).除了pwr包之外还有其它包.例如.基因研究中的效能分析(power analysis).MBESS包可用于各种形式的效能分析(power ...

  7. 卫星图像中的车辆分析--A Large Contextual Dataset for Classification, Detection and Counting of Cars

    A Large Contextual Dataset for Classification, Detection and Counting of Cars with Deep Learning ECC ...

  8. 如何调整按钮里的文字的位置android_UI设计中按钮场景分析

    别无他话,今天就和大家聊一聊设计宿敌--按钮设计.按钮的设计看似简单,其实按钮的功能不同,设计形式上也会有差异,今天我就针对按钮的场景分析,对按钮进行全面的解析. 按照功能性分类,按钮主要包括行为召唤 ...

  9. 双目标帕累托优化_结构力学中的优化分析(3) —— 结构优化分析

    引言 上文中,我们主要介绍了优化分析的基本类型. 蒙特遇见卡罗:结构力学中的优化分析(1) -- 优化方法基本概念​zhuanlan.zhihu.com 蒙特遇见卡罗:结构力学中的优化分析(2) -- ...

最新文章

  1. pytorch adam 源码 关于优化函数的调整 optimizer 调参 重点
  2. DIKW体系(Data-Information-Knowlege-Wisdom)
  3. 自动化安装Cacti(1.0.1/2/3)脚本
  4. 在webstorm里面添加自定义web browsers的方法
  5. 广东省老龄化预测及影响因素分析
  6. MySQL查询的进阶操作--分组查询
  7. 【数据竞赛】Kaggle竞赛如何保证线上线下一致性?
  8. Django(part46)--form表单验证
  9. java的Swing里怎么new一条线_java – 在JFrame上绘制一条线
  10. 不想横屏看视频?谷歌开源框架AutoFlip一键截出最精彩竖版视频
  11. 基于画像推荐系统设计(离线+实时)
  12. Meego的N9发布
  13. 基于51单片机的循迹小车(初学者必备!!!)
  14. Linux配置本地yum源(光盘镜像挂载)
  15. 生产力工具:功能强大又好用的浏览器网页截屏工具FireShot
  16. FL Studio电音编曲软件V21中文完整版 安装下载教程
  17. Win10下如何找到下载的主题壁纸,并提取图片
  18. 机器学习 —— 支持向量机
  19. 2022-2028全球与中国数据虚拟化解决方案市场现状及未来发展趋势
  20. BGA焊接可靠性评价指引,为产品质量保驾护航

热门文章

  1. shell `-c`参数 如何使用
  2. 复合五点高斯公式计算(Python实现)
  3. 【干货】eval函数用法解释及对开发者的便利讲解
  4. element菜单默认展开和选中
  5. Ubuntu上安装flashplayer
  6. Duilib vlc c++ 字符编码
  7. Dokan虚拟磁盘开发实战
  8. Giphy – 分享一个很棒的 GIF 动画图片搜索引擎
  9. UA MATH566 统计理论 QE练习题2.1
  10. CentOS查看已挂载的文件系统和文件系统信息