欢迎访问一起赢论文辅导网
本站动态
联系我们

手机:153 2730 2358
邮箱:910330594@QQ.COM

Q Q:
910330594
网址:http://www.17winner.com
工作时间:
9:00-24:00  

计算机论文
当前位置:首页 > 计算机论文
基于Hadoop 的分布式网络爬虫技术
来源:一起赢论文网     日期:2015-09-28     浏览数:1509     【 字体:

- 1 -1章 绪论1.1 课题来源本课题来源于哈工大语言语音教育部-微软重点实验室机器智能与翻译研究室项目“分布式跨语言信息获取和检索平台”的子课题。该课题的主要目标是设计实现一个基于Hadoop 的分布式爬虫系统,该爬虫针对27 种语言主流媒体网站的信息进行采集,并分别保存,为后面的信息处理、创建索引和检索提供数据。1.2 课题研究背景及意义目前,互联网正处于飞速前进的发展过程中,进入21 世纪以来其发展势头已远远超出人们想象。仅就我国而言,根据中国互联网络信息中心2011 1月发布的《第27 次中国互联网络发展状况统计报告》最新数据显示[1]:“截至2010 12 月底,我国网民规模突破4.5 亿大关,达到4.57 亿,较2009 年底增加7330 万人;互联网普及率攀升至34.3%,较2009 年提高5.4 个百分点。我国手机网民规模达3.03 亿,较2009 年底增加6930 万人。”由于互联网规模的不断扩大,在互联网这个大平台上的信息正在以指数级增长,各种各样的信息资源被整合到一起,而且大量数据属于地理位置分散的异构数字化信息,所有信息形成了一个宏大的信息库。这个信息库包括极其巨大的海量数据,所以,如何快速、高效、安全地从浩瀚的信息海洋中找到网络用户感兴趣的信息已成为当前互联网发展的主要目标。为了解决这一问题,搜索引擎应运而生,它的出现大大提高了网络用户搜集和查找信息的能力。然而随着互联网用户的增多,用户的需求也越来越多样化,搜索引擎的发展必须跟着用户的需求变得丰富、完善。当下,评价搜索引擎性能的好坏主要有三个指标[2,23]:“首先,原始网页数目的多少,这主要与搜索引擎爬虫的性能和规模有关,原始网页数目多、原始网页库规模大才会满足用户丰富多彩的需求,搜索引擎才会有市场;其次,搜索引擎的性能,主要体现在两方面,一是实时性,爬虫必须在较短的时间内更新原始网页库中最新数据。二是实效性,搜索引擎必须在较短的时间内返回用户提交query 对应的结果集合;最后是搜哈尔滨工业大学工学硕士学位论文- 2 -索的效果,搜索引擎需要能够采用比较优秀的检索算法和排序算法,将用户想要的结果返回。”如何解决在海量数据的情况下时间与空间上的矛盾,被公认为是下一代信息检索技术研究的一个方向。面对巨大的数据、大量的检索请求和用户对于检索时间的苛刻要求,信息检索的效率成为一个亟待解决的问题,依靠单机不可能完成这样的任务。如果单纯地依靠提高硬件性能即使硬件发展足够快也无法满足信息增长的速度,所以必须依靠分布式信息检索技术才能解决。事实上,几乎所有使用的大型搜索系统都采用了分布式的体系结构来处理海量数据从而解决信息检索中的效率问题。分布式搜索引擎是将很多台机器通过互联网络链接到一起,然后再软件层次使得多台机器可以协同解决大规模数据的处理、索引和检索问题。虽然它物理上把多台机器连接到了一起,但是这个集群在逻辑上仍然是一个整体。分布式搜索引擎有着得天独厚的优势,它可以很轻松地解决传统搜索引擎无法解决的问题,主要优势可以总结为以下五点[3,24]:搜索引擎中的存储资源、处理器资源、内存资源和数据全部被检索服务器所共享,并且检索服务器分布在不同地地理位置,当用户通过客户端提交一个检索请求时,客户端自动地向距离最近的检索服务器提交请求,这样减轻了其他检索服务器的负担。各个站点客户端的代理服务器相互合作更好地服务于用户的请求。后台信息处理的分布式计算模型有较好的可扩展性,且与前端别叫独立,便于维护。各种信息的索引分散地存在于不同机器上的索引数据库中,且这些分散的索引通过统一的分布式文件系统模型整合到一起,这样每一个索引数据库的容量很小,这使得查询速度会更快。容错性好,一但某些检索器或者索引器发生故障,不影响整个搜索引擎。进入21 世纪以来,互联网泡沫破碎的阴影尚未走远,Web2.0 的概念便蓬勃发展起来,这个开创性概念的提出给处在衰退期的互联网打入一针强心剂。在这个方兴未艾的Web2.0 时代,FacebookRenRenTwiter 等社区网站,抢走了很多传统门户网站的用户。大用户量以及高用户参与度,是这些社区网站的特点。因此,如何高效地服务于海量用户群体,使用户方便并快捷地体验网站所提供的服务,已经成为这些社区网站亟待解决的问题。同时,依靠Google 海量数据计算模型构建起来的Google 计算集群,给Google 提供了强大的信息处理能力而且使得Google 在海量数据中检索的速度哈尔滨工业大学工学硕士学位论文- 3 -大大提高。因此,如何高效地利用这种海量数据处理技术,使得更多的公司或者个人也能够拥有强大的计算与信息处理能力,成为那些拥有巨大数据资源的企业开始考虑的问题。正是因为互联网行业中对海量数据处理的需求,云计算就应运而生。由于云计算的概念才刚刚提出,每个企业、个人对它都有不同的理解,因此它还没有一个明确的定义,但是我们纵观各大企业权威对云计算的定义,我们可以总结出云计算的一些特点。下面举几个例子可以代表这些特点,Wikipedia 关于云计算的定义为“云计算是网格计算下的一种新的(大约在2007 年底出现)标签,它使用公用计算或其它方法来共享计算资源。云计算是依靠本机服务器或个人设备来处理用户应用程序之外的另一种选择”;News Blog 认为“云计算是一种将硬件与软件外包给因特网服务提供商的概念”; Forrester 则认为“云计算看起来十分像是一种典型的突破性技术”。到目前为止,微软、AmazonGoogleEMCIBM HP 等众多IT 业巨头都宣布要重点建设企业云计算框架。也有了很多成功的企业级云计算案例。在所有企业级案例中最为人们所熟知的莫过于2009 10 Google IBM 联合开启的“云计算”计划[25],包括Carnegie Mellon UniversityStanfordUniversityUniversity of California, BerkeleyUniversity of WashingtonMIT在内的众多知名大学都参加了这一计划,同事国内的清华大学也在2010 3月份申请加入了这一计划。在这项计划中,高校和企业都是受益者,高校可以利用两个IT 巨头的资源开发出各种创新的应用;而对于企业他们可以利用高校得天独厚的科研力量去探索和发展云计算。与此同时,Amazon 也不甘落后他们推出自己的云计算框架EC2[26],这项Amazon EC2 服务可以看成是一个开放的云计算系统,它可以为用户提供海量数据计算的能力,有效地降低数据处理的时间,同时比自己搭建一个云计算平台要方便的多。当然这些IT 巨头的成功案例中最成功的当属Google,目前应用最广、最著名的云计算基础设施思想就是Google 提出来的。Google 在一篇名为《WebSearch For A Planet-The Google Cluster Architecture[4]的文章中提出了他的云计算基础设施模式,在这篇文章中Google 提出他们的云计算基础设施包括四个部分:分布式文件系统GFS(Google File System)[5] Map/Reduce 编程模型[6],分布式的锁机制Chubby[7]和大规模分布式数据库BigTable[8]。正是由于云计算技术越来越被重视,实验室在信息检索和自然语言处理领域已有的研究基础上,设计实现一个分布式跨语言检索平台,该平台采用云计哈尔滨工业大学工学硕士学位论文- 4 -算及云存储。其中数据获取、数据处理均采用分布式框架。本人的主要工作是在开源分布式框架Hadoop 平台上搭建分布式爬虫。本文是结合所作工作阐述如何在Hadoop 平台上设计和实现分布式爬虫。1.3 本文主要工作及内容Hadoop 由 Apache Software Foundation 公司于 2005 年秋天作为 Lucene的子项目 Nutch 的一部分正式引入。它受到最先由Google 开发的分布式计算模型(MapReduce) 和分布式文件系统(GFS)的启发,是谷歌所提出的这两部分的实现。2006 月份,MapReduce 和 Nutch Distributed File System (NDFS)分别被纳入称为 Hadoop 的项目中。Hadoop 框架中最核心的设计就是:Map/Reduce HDFSMap/Reduce 本身就是用于并行处理大数据集的软件框架。Map/Reduce 的本质是高度抽象后的Map 函数和Reduce 函数。它可以理解为两个操作过程:Map 过程和Reduce 过程,每一个过程可能有多个Map 函数火车Reduce 函数。Map 函数的载体接受一组数据,在执行Map 函数之前,这组输入数据会被解析成键/值对列表,Map 函数计算的对象是一个键/值对。Reduce 函数接受Map 函数的输出结果,在执行Reduce 函数之前会将键相同的值聚到一起交给Reduce 处理。Hadoop 分布式文件系统(HDFS)是一个运行于Hadoop 框架之上的文件系统,他的成功设计可以让这个文件系统运行于普通的个人电脑之上。它与现有的文件系统有许多相似之处,然而,它与其他的分布式文件系统的差别也非常显著。主要表现在:HDFS 的高度容错性、成本低廉性、拥有高吞吐量访问数据的接口、可通过POSIX 流式访问和适合于开发海量数据的应用程序。HDFS的前身为Apache Nutch 的网络搜索引擎项目的基础设施。HDFS 现在是一个Apache Hadoop 的子项目。本文是在深入研究Hadoop 的原理和应用基础上,结合实验室需求,设计和开发了基于Hadoop 的分布式爬虫。并且目前已投入长期运行和使用。研究工作主要包括以下几点:调研ABICloud[31]Hadoop[30]Sector/Sphere[28]等目前应用较广泛的开源分布式框架。为分布式爬虫的设计实施提供技术支撑。熟悉Hadoop 的分布式文件系统(HDFS)。包括文件系统的结构、节点之间交互的通信协议、容错方式、数据访问方式。以方便爬虫系统的开发。哈尔滨工业大学工学硕士学位论文- 5 -掌握Hadoop Map/Reduce 编程模型,包括Map/Reduce 编程的整个流程、作业的配置、如何使用Map/Reduce 方式读写HDFS 上数据、具体的Map函数与Reduce 函数的实现方式和数据分块的几种方式。设计基于Hadoop 分布式爬虫的各个模块,使得各个模块满足Map/Reduce编程模式,以实现爬取过程的分布式计算。每个模块对应一个Map/Reduce 过程并完成一个功能。开发分布式爬虫,设计实施方案确定分布式爬虫的整个流程及编码实现各个模块,完成各个模块的功能。在伪分布式单节点环境下部署爬虫系统,测试爬虫的抓取效率、稳定性。同时,对Hadoop 分布式配置环境进行优化,通过实验进行各种功能测试和性能测试,找出合适的MapReduce 个数,从而更好地利用Hadoop 进行分布式协同处理。1.4 本文的主要组织和结构本文首先介绍云计算的发展状况及云计算相关原理,然后简单介绍目前应用较广泛的第三方云计算框架Hadoop,包括Hadoop 分布式平台结构和如何在Hadoop 平台开发自己的应用。另外,还会介绍分布式爬虫的研究现状及爬虫的基本原理。其次,在这些详细调研基础上,针对项目的需求提出基于Hadoop 平台分布式爬虫的设计方案,完成整个系统的结构设计及流程控制,将爬虫系统按照功能分解成几个模块,每个模块对应一个Map/Reduce 模式以适应Hadoop 分布式计算的需要。再次,对分布式爬虫的数据存储方式和数据格式信息进行了设计,并完成了爬虫各分模块具体类的实现。最后,进行爬虫的各种测试,包括分模块测试、功能测试、性能测试,同时结合Hadoop 集群配置的优化策略找出最合适的MapReduce 个数,从而更好地利用Hadoop 的分布式协同处理。在文章最后,详细分析本系统并进行评价,对本课题进行总结。本文的内容结构共分为五章,介绍如下:第一章,绪论,简单介绍本课题的来源、阐述本课题的研究背景及研究意义,另外,详细讲述本文的主要工作及研究内容并给出全文的组织结构。第二章,相关技术研究,本章是对分布式爬虫相关技术进行详细介绍,主要包括四个部分:云计算技术现状、原理,Hadoop 分布式平台结构,爬虫的基本原理,分布式爬虫的研究现状。在云计算技术现状、原理部分,本文从机哈尔滨工业大学工学硕士学位论文- 6 -体结构、服务和技术三个层次来阐述云计算技术的发展现状和原理。在Hadoop 分布式平台结构部分,本文对Hadoop 的两个核心技术:分布式文件系统(HDFS)和分布式计算模型(Map/Reduce)进行详细介绍。在爬虫的基本原理部分,本文从爬虫种类、工作方式、搜索策略等方面来分析爬虫的基本原理。在分布式爬虫的研究现状部分, 本文主要介绍Google Mercator InternetArchive 等目前较著名的分布式爬虫。第三章,功能分析与结构设计,本章针对实验室需求给出基于Hadoop 分布式爬虫的设计方案,同时完成爬虫系统的结构设计。主要内容包括个部分:分布式网络爬虫的设计需求、系统布局、爬虫系统基本结构、爬虫子模块的分布式结构和分布式爬虫的功能完善。在分布式网络爬虫的设计需求部分,本文主要结合实验室需求来阐述设计分布式爬虫的目标、要点。在爬虫系统布局部分,本文给出分布式跨语言检索平台的架构、平台的模块划分以及爬虫在整个平台中的地位。在爬虫系统基本结构部分,本文将介绍基于Hadoop 爬虫的基本流程图、爬虫的框架设计和爬虫的模块划分。在爬虫子模块的分布式结构部分,本文将介绍各个子模块的Map-Reduce 实现。在分布式爬虫功能完善部分,本文主要是针对爬虫系统设计和实现时遇到到一些技术细节问题做出相应的解决方案。第四章,分布式爬虫具体实现,本章是在第三章设计的基础上对基于Hadoop 分布式爬虫的子模块进行了具体设计,包括数据结构、数据格式、具体代码的编写等等。主要内容包括个部分:抓取模块(CrawlerDiver)的实现、分析模块(ParserDiver)的实现、优化模块(OptimizerDiver)的实现、合并模块(MergeDriver)的实现和转化XML 模块(HtmlToXmlDiver)的实现。在抓取模块部分,本文主要介绍爬虫抓取功能的Map-Reduce 实现,包括下载网页、多线程任务等。在分析模块部分,本文主要介绍爬虫提取链出链接部分的Map-Reduce 实现,具体包括Map/Reduce 模型的设计、HTML 解析等。在优化模块部分,本文主要介绍如何用Map/Reduce 实现对分析模块提取出来的链出链接进行过滤去掉重复链接。在合并模块部分,本文主要介绍去重功能的Map-Rduce 实现。在转化XML 模块部分,本文主要介绍将HTML 转化为XML 部分的Map-Rduce 实现。第五章,性能分析与评价,对整个基于Hadoop 的分布式爬虫系统性能进行分析和评价,并在给出系统的界面展示。本章主要包括四个方面:首先,系统的界面展示,这个界面主要是分布式文件系统的WEB UI,通过它可以直观地看到集群中全部已抓取网页。其次,对已抓取的数据进行统计和分析。再哈尔滨工业大学工学硕士学位论文- 7 -次,与非分布式爬虫系统的性能比较,突出分布式爬虫的优点。最后,对本系统的关键问题的解决办法做出探讨和剖析。总结和展望,最后对全文进行总结,归纳出设计的要点,梳理全文的结构,整理本文设计的基于Hadoop 分布式爬虫的优点和缺点。

[返回]
上一篇:大数据环境下的网络主动入侵检测方法研究
下一篇: 基于文本挖掘技术对股票论坛的分析