Nutch 分布式网络爬虫研究与优化
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*The Natural Science Foundation of Hunan Province of China under Grant No. 07555084 (湖南省自然科学基金); the Science and Technology Projects of Guangdong Province under Grant No. 2009B080701031 (广东省科技计划项目). Received 2010-04, Accepted 2010-06.
ISSN 1673-9418 CODEN JKYTA8 E-mail: fcst@ Journal of Frontiers of Computer Science and Technology
1673-9418/2011/05(01)-0068-07 Tel: +86-10-51616056
DOI: 10.3778/j.issn.1673-9418.2011.01.007
Nutch 分布式网络爬虫研究与优化*
詹恒飞1+, 杨岳湘2, 方 宏2
1. 国防科学技术大学 计算机学院, 长沙 410073
2. 国防科学技术大学 信息中心, 长沙 410073
Research and Optimization of Nutch Distributed Crawler *
ZHAN Hengfei 1+, YANG Yuexiang 2, FANG Hong 2
1. School of Computer Science, National University of Defense Technology, Changsha 410073, China
2. Information Center, National University of Defense Technology, Changsha 410073, China + Corresponding author: E-mail: zhf_a_b@16
ZHAN Hengfei, YANG Yuexiang, FANG Hong. Research and optimization of Nutch distributed crawler. Journal of Frontiers of Computer Science and Technology, 2011, 5(1): 68-74.
Abstract: As a good open-source search engine, Nutch kernel code uses a lot of MapReduce programming models, being used by more and more businesses and organizations to customize their needs in line with the distributed search engine product. As a good search engine, one of the important prerequisites is how to grab network data as much as possible to build indexes. This paper introduces Nutch’s working mechanism based on Hadoop distributed Web crawler, points out its shortcomings and proposes an improved program, which can make Web crawler using network resources more efficiently to capture network data. Experimental results show that it is indeed more effi-cient than the original programs.
Key words: Nutch; Web crawler; flexible crawling
摘 要: Nutch 作为一个优秀的开源搜索引擎, 其内核代码大量采用了MapReduce 的编程模式, 被越来越多的企业和团体用来定制符合自身需求的分布式搜索引擎产品。作为优秀的搜索引擎, 其重要的前提是如何
詹恒飞等:Nutch分布式网络爬虫研究与优化69
尽可能多地抓取到网页数据来建立索引。介绍了Nutch基于Hadoop下的分布式网络爬虫工作机制, 指出其不足之处, 并提出了改进方案, 从而使网络爬虫能够更加高效地利用网络资源来抓取网络数据。经过实验测试, 证明了此方案比原方案更加高效。
关键词: Nutch搜索引擎; 网络爬虫; 弹性抓取机制
文献标识码:A 中图分类号:TP393
1引言
网络爬虫是搜索引擎的一个重要组成部分, 一个好的网络爬虫往往有爬行速度快、获取数据量大和获取信息准确等优点。在目前因特网规模飞速膨胀, 每天都会产生大量新网页的形势下, 如何令网络爬虫更加高效, 可以在同样的时间里抓取到更多的有效网页就变得十分重要了。
2技术背景
Nutch是一个基于Lucene的优秀开源搜索引擎, 它是最早用到MapReduce的项目(Hadoop原来是Nutch的一部分)。如今, MapReduce编程方式占据了Nutch核心结构的大部分, 它极大地方便了编程人员在不会分布式并行编程的情况下, 将自己的程序运行在分布式系统上。Nutch主要分为两个部分:网络爬虫和查询[1]。网络爬虫的主要作用是从网络上抓取网页数据并建立索引; 查询则主要是利用这些索引来检索用户所提交的关键词并产生和返回查找结果。两大部分之间的交汇点是索引, 耦合度相对较低。
2.1 MapReduce介绍
MapReduce是一种编程模型, 用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(化简)”, 以及他们的主要思想, 都是从函数式编程语言和矢量编程语言里借来的特性[2]。该模型的核心是Map和Reduce两个函数, 这两个函数由用户实现, 功能是按一定的映射规则将输入的
图1说明了用MapReduce来处理大数据集的过程。简而言之, MapReduce的计算过程就是将大数据集分解为成百上千的小数据集, 经过任务分发器, 将每个(或若干个)数据集分别由集群中的一个结点进行处理并生成中间结果, 然后这些中间结果又由若干个结点进行并行的多次合并, 形成最终结果。最简单的MapReduce应用程序只需包含三个部分:Map函数、Reduce函数和Main函数。主要是实现Map和Reduce函数, Main函数则将作业控制和文件输入/输出结合起来。其他并行编程中的复杂问题, 均由Hadoop处理[4]。
Fig.1 MapReduce process
图1 MapReduce过程图
2.2 Nutch网络爬虫工作过程
Nutch基于MapReduce模式的分布式网络爬虫工作过程, 如下所示[5]。
读取URL种子文件到Crawl DB, 然后进行下面的抓取程序。
(1) 循环①~④到指定的抓取深度:
①从Crawl DB生成抓取列表;
②根据抓取列表中的URL抓取网页;
③分析处理抓取的内容;
④更新Crawl DB库。
(2) 转化每个页面中外部对它的链接。
(3) 建立索引。
具体过程如图2所示。其中的各个模块分别为: