论文部分内容阅读
随着大数据时代的到来,数据扮演着越来越重要的角色,如何快速、准确地获取到大量的数据成为当务之急。面对海量数据,单机网络爬虫有CPU、IO、带宽等多重限制,抓取数据性能比较低,其已经不能适应大数据时代的数据抓取工作,分布式网络爬虫便应运而生。分布式网络爬虫可以理解为集群爬虫,如果有抓取任务,多台机器同时运行,可以更快更高效的完成任务。本课题结合当下流行的起点中文网,设计并实现了一种基于Storm的分布式网络爬虫,并将其部署在Docker平台上,结合Storm与Docker的多种特性,提升了网络爬虫的抓取性能、可移植性以及扩展性等等。本文基于Storm流式处理框架、Redis高速缓存数据库、Docker容器平台以及网络爬虫的相关知识,设计出基于Storm的分布式网络爬虫,其具有以下特点:首先,将网络爬虫与Storm流式处理框架相结合,使爬虫任务并行化,从而提高网络爬虫的抓取性能;其次,将抓取到的URL存储到Redis高速缓存数据库中,实现对URL的高速存取,提高URL读写速度;然后将抓取到的数据存储到MySQL集群中,并且引入MyCat数据库中间件与MySQL相结合,实现数据库的读写分离、水平拆分;最终将该分布式爬虫系统部署到Docker容器平台上,保持了爬虫系统在跨环境时的一致性以及高可移植性等等。本次实验环境的搭建将使用六台虚拟机搭建Docker容器集群,其中使用四台虚拟机搭建Storm容器集群,在其余两台虚拟机上分别搭建Redis容器集群和MySQL容器集群,并通过设置Storm容器集群中的不同的工作主机数量以及不同的Worker进程数量,分别进行数据抓取测试。从测试结果分析得出,本文设计的分布式网络爬虫的各功能模块运行良好,能够以较高的准确率对数据进行抓取,而且相比单机网络爬虫,其数据抓取效率明显提高,灵活性和扩展性也大大增强。