fuel 2011-05-25
人们的日常生活中发挥着重要的作用.然而,互联网的飞速发展使搜索引擎面临巨大的挑战.2008年1月发布的
《第21次中国互联网络发展状况统计报告》[1]显示,中国网站数量已达150万个,比去年同期增长了66万个,
增长率达到78.4%;中国总网页数为84.7亿个,年增长率达到89.4%;网站总字节数已经达到198348GB.按照目
前的统计数字,假设搜索引擎爬虫系统的网络接入总带宽为100Mb/s,即使这些带宽被完全利用,仅下载中国的
网页就需要近200天.如此巨大的数据量,使得对网页内容和链接关系的处理必须由多机并行完成.
分布式Web爬虫是由多个可并发获取Web信息的Agent构成的Web爬虫系统,每个Agent运行于不同的
计算资源之上,这些资源或集中部署在同一个局域网(localareanetwork,简称LAN)内部,或分布在广域网(wide
areanetwork,简称WAN)的不同地理位置和网络位置,每个Agent以多进程或多线程方式通过并发保持多个
TCP链接获取Web信息.部署于LAN上的分布式Web爬虫受到带宽等因素的制约,已经不能对Web进行快速
而有效的抓取.基于广域网的分布式爬虫实现方案具有多点接入总带宽较高、对Internet负载较小、容易实现
就近高效抓取以及可扩展性强等优点,已经成为学术界、商业界和开源社区爬虫系统实现的优选方案.
广域网分布式爬虫融合了分布式系统、并行计算及网络测量等主题,具有很强的应用价值与理论研究意
义.本文第1节概括总结广域网分布式爬虫近年来在商业界和学术界的发展现状.第2节~第4节详细讨论广域
网分布式爬虫领域亟待深入研究的3个关键问题:Web划分、Agent协同和Agent部署,详细论述了解决这些问
题的多种方法及策略,对其优、缺点进行评价.第5节给出目前流行的分布式爬虫的评价模型.最后,对全文进行
总结,并指出未来研究的若干方向.
言
1
引
在分布式Web爬虫领域,商业界与学术界各自为战,许多优秀的实现方法不是源自于学术界,而是来自于一
些公司.出于商业因素的考虑,公司成果一般不通过论文公开发表;而学术界的研究成果虽然公开,但是被大规
模采用的并不多;另外,还有一些组织和个人以GPL(GNUgeneralpubliclicense)的方式开发和发布自己的系统.
遗憾的是,这类系统也很少以论文形式发表.
部署在LAN上的分布式Web爬虫率先被提出,并得到广泛的使用.较为著名的有早期的Google[2],AltaVista
的InternetArchiveCrawler[3],Mercater[4]等.但是,由于受到带宽等瓶颈因素的制约,此种系统即使软硬件的规模
不断扩大,也只能获取全体Web信息中相对较小的一部分.为了解决上述问题,人们提出了部署于广域网环境的
分布式Web爬虫.
1.1相关工作
近几年来,商业界和开源社区出现了一些广域网分布式爬虫系统(或搜索引擎),其思路一般是公司或组织
向用户提供爬虫程序.一方面,分布在各地的用户运行自己机器上的爬虫程序为公司提供数据;另一方面,公司
为安装有爬虫的用户提供各种检索服务,如Yacy(http://yacy.net/)的个性化匿名检索,甚至将利润反馈给用户(如
Faroo(http://www.faroo.com/)).在实现方面,这些系统有的是类似于SETI@Home[5]那样的主从式结构(如
Majestic(http://www.majestic12.co.uk/)),属于有调度中心的Agent协同;有的是P2P方式进行分布式调度(如
Faroo),即无调度中心的Agent协同.这些系统的实现五花八门,但是由于发展时间较短,规模相对较小.
在学术方面,Cho等人[6]首次给出了分布式爬虫的分类方法、评价指标等一系列基本概念,并提出基于广域
网分布式爬虫与部署于LAN的系统相比,具有高可扩展性和减少Internet负载的优点,为广域网分布式爬虫的
研究奠定了基础.UbiCrawer[7]扩展了文献[6]中的一些概念,并声称可以支持基于广域网的分布式平台.DustinB
等人[8]对多种分布式爬虫进行了比较,提出广域网爬虫是解决爬虫系统带宽瓶颈的有效方法.Yahoo研究院的
Baeza-Yates等人[9]在其综述中将分布式爬虫定义为“原则上某些节点可以分布于不同的地理或网络位置”.
2003年后,很多研究开始关注广域网分布式爬虫,代表性的有,IPMicra[10]第一个基于位置信息调度的分布式爬
虫,SE4SEE[11]实现了基于网格[12]的分布式爬虫,Apoidea[13]实现了基于P2P协议的完全分布式爬虫.
国内学术界对分布式爬虫研究得较少,代表性的有北京大学的天网搜索引擎[14]的爬虫系统,这是一个基于
LAN的爬虫,已经开始商业化运作;上海交通大学的Igloo爬虫[15]实现了基于网格服务的分布式爬虫(IglooG),