分布式搜索引擎经历了几个发展阶段:
InfraSearch:2000 年 4 月,开发成员以 InfraSearch 非集中式网络为基础建立了一个点对 点 web 搜索引擎原型。该引擎运行于网络数据库中,从而创造了一个能够访问 InfraSearch 网 站的 p2p 网络。
Opencola:2000 年 5 月,Steelbridge 公司 宣布开 发一个协 作分布 式开 源搜索 引擎 OpenCOLA,运行在用户终端,能够实现爬取网页、链接用户、保存信息,并通过用户的 p2p 网络分享结果索引。
YaCy:2003 年 12 月,迈克尔·克里森宣布开发以 P2P 为基础的搜索引擎,最终命名为
YaCy,并运行在海泽在线论坛上。
FAROO:2001 年 2 月,乐福。首次提出点对点搜索引擎的设想,并在 2004 年开始创造 Faroo
原型机,最终于 2005 年成功发布。
1。3 本文研究工作
本科毕业设计说明书 第 3 页
本课题的主要研究内容是设计实现一套通用的垂直网络内容爬取系统。针对目前垂直搜 索领域的应用场景,需要对特定网站或私有数据库内容进行深度爬取,通过指定相关关键词 或划定区域,爬取特定网站或数据库的特定内容,并将爬取数据保存到服务器。
本课题的主要工作可归纳为以下几个方面:首先,在单机(单结点)环境下应用 nutch 爬虫和 solr 搜索引擎,并测试成功;其次,将 nutch 爬虫和 solr 引擎搭载在 hadoop 云平台上, 实现了分布式网络爬虫的功能,能够在大规模、多并发的任务的情况下扩展结点,提高网络 带宽和爬取效率,并且实现周期性爬取和多用户登录等实用功能;最后,对上述的环境搭建 和功能实现工作进行系统全面的测试,针对搭建、整合和调试阶段中出现的众多错误和问题 展开分析并加以解决。
1。4 本文结构安排
第一章为绪论章节,主要介绍搜索引擎发展历史和趋势、分布式搜索引擎发展背景和历 史以及本文的主要工作。论文网
第二章为所用技术简介章节,主要介绍了 nutch、hadoop 和 solr 的一些基本信息。 第三章为环境搭建章节,主要介绍分布式爬虫运行所需环境的搭建,包括 java 环境的搭
建、ant 环境的搭建、hadoop 集群的搭建、nutch 环境的搭建和 solr 环境的搭建等。 第四章为调试测试阶段章节,主要介绍环境搭建和程序运行时出现的若干主要问题,分
析问题原因,并提出相应的解决措施。 第五章对本课题的工作进行总结并对本课题的后续研究方向做出探讨。
第 4 页 本科毕业设计说明书
2 技术综述
2。1nutch 简介
Apache Nutch 是一个具有高度可扩展性和高度可伸缩性的开源网络爬虫软件项目[14]。 Nutch 在编码上完全使用 java 编程语言,但是数据以语言无关格式写入。Nutch 具有一个高度 模块化的架构,允许开发人员为媒体类型分析、数据检索、查询和集群创建插件。如下图所 示,Nutch 首先要有一个爬虫(即下图的撷取器),可以抓取 url 更新 web 数据库,而 web 数 据库又能生成抓取列表,给撷取器提供抓取目标。同时撷取器抓取的内容被索引器和搜索器 处理,索引器根据抓取的内容生成索引,搜索器即可以按内容搜索,又可以按索引搜索,然 后将搜索的内容反馈给 web 服务器,以便回复 web 服务器的 request 或 query 请求。
图 2。1 nutch 结构图
2。1。1nutch 文件组成
Nutch 在使用 ant 编译之后会生成 runtime 文件夹,runtime 文件夹下包括 deploy 和 local 两个文件夹。Deploy 文件夹用于分布式爬取,一般与 hadoop 集群联用,爬取结果以 hdfs 文 件存储;local 文件夹用于本地爬取(即单结点爬取),在爬取数据文件夹下又有 3 个文件夹: crawldb、linkdb、segment,功能和用途分别描述如下: