Nutch主流程代码阅读笔记整理(一)
2010-06-24 19:15
239 查看
Nutch 的Crawler和Searcher两部分被尽是分开,其主要目的是为了使两个部分可以布地配置在硬件平台上,例如Crawler和Searcher分别被放置在两个主机上,这样可以极大的提高灵活性和性能。
一、总体流程介绍
爬行过程在Introduction to Nutch, Part 1 Crawling 里已有详细说明,或许直接看Crawl类来理解爬行的过程。
这里有一幅更直观的图:
1、先注入种子urls到crawldb
2、循环:
* generate 从crawldb中生成一个url的子集用于抓取
* fetch 抓取上一小的url生成一个个segment
* parse 分析已抓取segment的内容
* update 把已抓取的数据更新到原先的crawldb
3、从已抓取的segments中分析出link地图
4、索引segment文本及inlink锚文本
Nutch用入口地址,地址正则表达式,搜索深度三种形式来限制
因为使用了Hadoop,Nutch的代码都按照Hadoop的模式来编写以获得分布式的能力,因此要先了解一下Hadoop,明白它Mapper,Rerducer,
InputFormat, OutputFormat类的作用才能更好的阅读。
二、相关的数据结构和目录结构分析
爬虫Crawler:
Crawler
的工作流程包括了整个nutch的所有步骤--injector,generator,fetcher,parseSegment,updateCrawleDB,Invert
links, Index ,DeleteDuplicates, IndexMerger
Crawler涉及的数据文件和格式和含义,和以上的各个步骤相关的文件分别被存放在物理设备上的以下几个文件夹里,crawldb,segments,indexes,linkdb,index五个文件夹里。
那么各个步骤和流程是怎么,各个文件夹里又是放着什么呢?
观察Crawler类可以知道它的流程
./nutch
crawl urls -dir ~/crawl -depth 4 -threads 10 -topN 2000
Crawl目录结构分析,参考自《Lucene+Nutch搜索引擎开发》
一、crawldb
下载的url,以及下载日期,用来进行页面更新
二、segements 存放抓取页面和分析结果
1、crawl_generate:待下载url
2、crawl_fetch:每个下载url的状态
3、content:每个下载页面的内容
4、parse_text:包含每个解析过的url文本内容
5、parse_data:每个url解析出的外部链接和元数据
6、crawl_parse:用来更新crawl的外部链接库
三、linkdb 存放url的互联关系
四、indexes:存放每次下载的独立索引目录
五、index:符合lucene格式的索引目录,是indexes里所有index合并后的完整索引
数据结构:
Crawl DB
● CrawlDb
是一个包含如下结构数据的文件:
<URL,
CrawlDatum>
●
CrawlDatum:
<status,
date, interval, failures, linkCount, ...>
● Status:
{db_unfetched,
db_fetched, db_gone,linked,
fetch_success,
fetch_fail, fetch_gone}
一、总体流程介绍
爬行过程在Introduction to Nutch, Part 1 Crawling 里已有详细说明,或许直接看Crawl类来理解爬行的过程。
这里有一幅更直观的图:
1、先注入种子urls到crawldb
2、循环:
* generate 从crawldb中生成一个url的子集用于抓取
* fetch 抓取上一小的url生成一个个segment
* parse 分析已抓取segment的内容
* update 把已抓取的数据更新到原先的crawldb
3、从已抓取的segments中分析出link地图
4、索引segment文本及inlink锚文本
Nutch用入口地址,地址正则表达式,搜索深度三种形式来限制
因为使用了Hadoop,Nutch的代码都按照Hadoop的模式来编写以获得分布式的能力,因此要先了解一下Hadoop,明白它Mapper,Rerducer,
InputFormat, OutputFormat类的作用才能更好的阅读。
二、相关的数据结构和目录结构分析
爬虫Crawler:
Crawler
的工作流程包括了整个nutch的所有步骤--injector,generator,fetcher,parseSegment,updateCrawleDB,Invert
links, Index ,DeleteDuplicates, IndexMerger
Crawler涉及的数据文件和格式和含义,和以上的各个步骤相关的文件分别被存放在物理设备上的以下几个文件夹里,crawldb,segments,indexes,linkdb,index五个文件夹里。
那么各个步骤和流程是怎么,各个文件夹里又是放着什么呢?
观察Crawler类可以知道它的流程
./nutch
crawl urls -dir ~/crawl -depth 4 -threads 10 -topN 2000
Crawl目录结构分析,参考自《Lucene+Nutch搜索引擎开发》
一、crawldb
下载的url,以及下载日期,用来进行页面更新
二、segements 存放抓取页面和分析结果
1、crawl_generate:待下载url
2、crawl_fetch:每个下载url的状态
3、content:每个下载页面的内容
4、parse_text:包含每个解析过的url文本内容
5、parse_data:每个url解析出的外部链接和元数据
6、crawl_parse:用来更新crawl的外部链接库
三、linkdb 存放url的互联关系
四、indexes:存放每次下载的独立索引目录
五、index:符合lucene格式的索引目录,是indexes里所有index合并后的完整索引
数据结构:
Crawl DB
● CrawlDb
是一个包含如下结构数据的文件:
<URL,
CrawlDatum>
●
CrawlDatum:
<status,
date, interval, failures, linkCount, ...>
● Status:
{db_unfetched,
db_fetched, db_gone,linked,
fetch_success,
fetch_fail, fetch_gone}
相关文章推荐
- Nutch主流程代码阅读笔记整理(三)
- Nutch主流程代码阅读笔记整理
- Nutch主流程代码阅读笔记整理(二)
- nutch主流程代码阅读心得
- Mysql源代码阅读笔记(一) 代码流程
- ijkplayer阅读学习笔记之从代码上看播放流程
- 【Heritrix基础教程之4】开始一个爬虫抓取的全流程代码分析 分类: H3_NUTCH 2014-06-04 20:10 1039人阅读 评论(0) 收藏
- ijkplayer阅读学习笔记之从代码上看播放流程
- 【Nutch2.2.1源代码分析之5】索引的基本流程 分类: H3_NUTCH 2014-08-25 14:18 1042人阅读 评论(0) 收藏
- Spark源码阅读笔记:任务提交流程整理
- ijkplayer阅读学习笔记之从代码上看播放流程
- 深入研究Clang(七) Clang Lexer代码阅读笔记之Lexer
- 阅读xtrabackup代码的一点笔记
- 阅读代码—整理学习python数据处理1
- tensorflow笔记:流程,概念和简单代码注释
- 代码阅读总结之ASP.NET StartKit TimeTracker(QueryString之改进笔记)
- ffmpeg中的http协议相关代码阅读笔记
- squid阅读笔记一 - squid工作流程
- Android 中的WiFi学习笔记(转载)----WIFI启动 代码流程走读---网络连接流程
- 阅读笔记 > 关于代码注释