论文部分内容阅读
近些年互联网上的网页成指数级爆增,在这样一个大数据时代的背景下,由于单机爬虫自身有限的计算和存储的能力已经远远不能满足对数据的抓取,随着分布式技术平台的崛起,为这一棘手的难题带来了福音。将网络爬虫系统与分布式平台融为一体可以完美的解决大规模网页的抓取与存储等一系列困难。所以在大数据时代的背景下,对于Hadoop平台与爬虫系统结合的分布式爬虫系统的研究非常有价值。这里对分布式爬虫领域里非常关键的算法(任务调度算法与URL去重算法)深入分析,发现它们的缺陷,然后在分布式平台中对其完善和优化。任务调度算法是分布式爬虫中一个很关键的算法,假如任务分配不当,会严重的降低集群的爬取效率。第三章对比较优秀的基于加权轮转的任务调度算法做了深入分析,提出了一种带反馈的动态的加权轮转任务调度算法,在充分发挥加权轮转任务调度优点的基础上克服了其固定权重所带来的负面影响,是系统达到一个很好的负载均衡。URL去重算法是严重制约爬取效率的一个算法,如果去重算法设计的不好,就会出现连续爬相同的网页,还有可能陷入死循环。基于Bloom Filter的去重采用的不是存储元素本身,节约了大量的存储空间,这在大数据的今天尤为重要,并且其插入和查询元素复杂度非常低,且其里面的位数组数据结构也非常容易实现。但有一点它存在误判率问题。第四章对其深入分析,找出误判率的本质所在,结合爬取的URL的特点对标准Bloom Filter进行了改进,提出了MBF过滤器,并将其运用于Hadoop分布式爬虫系统里,在充分发挥了Bloom Filter的优点的同时有效的降低了Bloom Filter带来的误判率问题。最后基于第三章第四章改进的两个关键算法对分布式网络爬虫系统进行了设计与实现。通过需求分析、流程分析、系统的概要设计(包括物理框架设计和逻辑框架设计)、模块设计、数据存储结构的设计,对分布式爬虫系统进行了详细的实现,最后对分布式爬虫系统进行了一些测试。