锁定老帖子 主题:理解Nutch的工作流程
该帖已经被评为隐藏帖
|
||||
---|---|---|---|---|
作者 | 正文 | |||
发表时间:2010-01-10
最后修改:2010-01-10
在没有学习研究Nutch的源代码之前,我认为还是有必要对Nutch的工作流程有一个感性的认识和了解。通过对Nutch工作流程的学习认识,先有一个整体的印象,然后可以很好地指导我们去阅读学习它的源代码,从而更加深入理解Nutch。 当然,也不是唯一的,在阅读一个框架的源代码的时候,只要你选择了一个好的突破口,然后按照基于深度遍历的特性来学习理解,也能起到一定效果。但是,这种方式有点像是对着一个黑盒进行研究,对一个有机体没有一个整体的把握,也就是说没有整体概念,或者整体概念有点模糊。 Nutch工作流程 先展示一个相当生动的图片,它描述了Nutch的工作流程,如图所示: ![]()
其实,只要你沿着图中的数字标号的顺序就可以简单地了解一下Nutch的工作流程。这里,涉及到一些比较重要的目录,比如crawldb、index、indexes、linkdb、segments,这些目录是在你使用Nutch抓取程序执行抓取任务的过程中,在文件系统中生成的,在文章http://hi.baidu.com/shirdrn/blog/item/f92312ef58a260e9ce1b3ef9.html中执行命令:
之后,可以在mydir目录下面看到上面列举出的5个目录,简单介绍如下:
因为在上面的工作流程图中出现了上面的这些目录,对理解Nutch的工作流程很重要。下面,根据图中的流程将Nutch的工作流程分为两个部分进行综述。 以index为分隔线,因为第一部分,在左侧,是抓取网页并分析处理;第二部分是基于index索引库提供检索功能。 第一部分流程综述: 1.)inject start urls 注入抓取URL。因为Nutch的抓取程序要抓取网页,而定位到某个(或者某些)网页需要指定一个URL,在此基础上,Nutch按照广度遍历策略进行抓取,会根据一开始指定的URL(可以是一个URL集合:URLs),以此为基础进行抓取工作。 2.)generate segment 生成segment。Nutch抓取程序需要抓取到很多的页面,那么具体是哪些页面的?当然,在互联网上是通过URL来定位的。这一步骤主要是对上一步提交的URL集合进行分析,确定抓取任务的详细信息。 fetch list 分析提交的URL集合之后,建立一个抓取任务列表。在以后的抓取工作中就可以根据预处理的此列表进行工作了。 www 这是通过访问万维网(www),实现抓取工作。 3.)fetch content 开始根据前面生成的抓取任务列表中指定的URL对应的页面,这时候开始抓取工作了。 fetched content 需要将抓取到的这些页面文件存放到指定的位置,这些页面文件可以是经过简单预处理以后而被存储到文件系统中,也可以是原生的网页文件,以备后继流程基于这些文件来进一步处理,比如分词,建立索引。 content parser 内容解析器。抓取到的页面文件被提交到这里,实现对页面文件的处理,包括页面文件的分析和处理。 4.)parse content 当然,我们抓取的数据是结构和内容非常复杂的数据,而我们感兴趣的主要是文件的内容,因为基于关键字检索的搜索引擎的实现,都是根据文本内容来实现的。 parsed text & data 通过content parser解析器,最终获取到的就是文本内容和其它一些可能需要用到的数据。有了这些可以识别的文本内容和数据,就可以基于此来建立索引库,而且需要将本次抓取任务的详细信息登录到crawlDB,为下次抓取任务提供有用的信息(比如:避免重复抓取相同的URL指定的页面)。 因此接下来分为两个方向:一个是索引,一个是更新crawlDB并继续执行抓取任务: indexing 这是一个索引的过程,对分析处理完成并提交的文本及其数据建立索引,通过索引文件就可以实现信息的检索功能了。建立索引过程中,由于是基于Lucene的,所以用到了Analyzer分析器,对预处理的文件进行分析、过滤、分词等等,最后将写入到索引库,供搜索程序工作使用。 update crawlDB with new extracted urls 根据网页分析处理获取到的信息,更新crawlDB(爬行数据库),并根据提取到的抓取任务已经注入的URLs循环执行抓取任务。 第二部分流程综述: 这部分比较简单了,就是启动WEB服务器,为用户提供检索服务。 这里,用户可以直接通过输入检索关键字,使用Lucene对用户检索关键字进行处理调用Nutch的搜索程序,基于索引库中存储的信息,来提取满足用户检索需求的信息。 Nutch工作流程总结 上面的流程已经分析地非常透彻了,参考一些资料做个总结吧。通过下面总结的工作流程,理清思路,很有帮助的,如下所示,Nutch的工作流程描述:
参考文章: 1、http://today.java.net/pub/a/today/2006/01/10/introduction-to-nutch-1.html 2、http://www.blogjava.net/calvin/archive/2006/08/09/62507.html 3、Nutch入门学习.pdf 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
||||
返回顶楼 | ||||
发表时间:2010-01-11
这个也是转帖,不注明出处的。
剽窃行为。 http://hi.baidu.com/shirdrn/blog/item/bede8afa834cef9159ee90cf.html |
||||
返回顶楼 | ||||
浏览 2493 次