论文部分内容阅读
随着互联网的飞速发展,Web上的网页信息迅猛增长,面对互联网上错综复杂、规模巨大的海量信息时,单机网络爬虫由于计算能力和存储空间的局限性,使得抓取和处理海量数据变得十分困难。而由Apache基金会研发的Hadoop分布式计算平台在处理和存储海量数据有着高可用性、高伸缩性、高扩展性的特点,使Hadoop技术迅速成为了海量数据处理领域的热门首选。将网络爬虫技术与Hadoop分布式计算平台结合组成的分布式网络爬虫有效解决了海量网页数据的抓取、存储和分析的问题。因此基于Hadoop的分布式网络爬虫具有十分重要的研究价值和意义。本文对网络爬虫中的两个算法:链接分析算法和URL去重算法进行了研究与分析,并针对算法在Hadoop环境下的不足进行了改进优化。在网络爬虫抓取网页后,需要对抓取下来的网页进行重要性的分析,PageRank算法是Google用于标识网页的重要性的一种方法,而在大数据环境下,基于Hadoop的PageRank算法中每个URL的出链接都会作为MapReduce中间结果输出,使得Map函数输出文件很大,而这些结果文件需要通过网络传输到Reduce端,过多的时间消耗在网络传输上,造成算法的计算效率低。针对这一问题,本文第四章对基于Hadoop的PageRank算法进行了改进,根据URL链接形成的Web图的特点,对Web图进行分割,划分为URL子图,将子图内与子图之间PageRank的部分合并计算转移到Map阶段,减少了Map函数输出文件大小,从而降低了MapReduce的中间网络传输时间,提高了算法效率。URL去重算法同样也是网络爬虫中的一个重要算法,URL去重算法在爬虫新抓取的URL加入待抓取队列之前,过滤已经抓取过的重复URL,使得网络爬虫的性能得到提高。本文重点研究了布隆过滤器去重算法,BloomFilter的占用的空间与元素本身无关,有较高的空间效率,插入和查询操作的时间复杂度也较低,且过滤器中位数组也适合并行实现;但随着元素的添加,过滤器的误判率也随之增加,将许多无重复的URL过滤,对爬虫性能造成影响。针对这一问题,本文第五章对标准过滤器进行改进,提出动态主从布隆过滤器结构的改进算法,只有当两个过滤器都造成误判率的情况下才判定过滤器为误判,并且当元素增加时,动态增加过滤器个数,延缓误判率的增长速率。并实现了基于Hadoop的BloomFilter算法和改进算法,降低了过滤器的误判率。