crawldb:包含 Nutch 所发现的所有 URL,以及 URL 是否被抓取、何时被抓取等信息。
linkdb:包含 Nutch 所发现的 crawldb 文件夹中的 URL 所对应的全部链接,以及源 URL
和锚文本。
本科毕业设计说明书 第 5 页
segments:包多个以时间命名的 segment 文件夹。每个 segment 即为一个抓取单元,个包 含一系列的 URL,每个 segment 又包含如下文件夹:
crawl_generate:待抓取的 URL crawl_fetch:每个 URL 的抓取状态 content:从每个 URL 抓取到的原始内容 parse_text:从每个 URL 解析得到的文本
parse_data:从每个 URL 解析得到的外链和元数据
crawl_parse:包含外链 URL,用以更新 crawldb
2。1。2nutch 爬取过程
Nutch 爬取主要通过两种方式:bin/crawl 命令一键式爬取和分步抓取。
(a) bin/crawl 一键式爬取可通过如下的命令实现
Usage: crawl [-i|--index] [-D "key=value"] <Seed Dir> <Crawl Dir> <Num Rounds>
-i|--indexIndexes crawl results into a configured indexer
-D A Java property to pass to Nutch calls
Seed Dir Directory in which to look for a seeds file
Crawl Dir Directory where the crawl/link/segments dirs are saved Num Rounds The number of rounds to run this crawl for
其中-i 表示索引器将爬取结果生成索引
-D 表示传递给 nutch 请求的 java 参数
Seed Dir 表示存放 url 的文件夹
Crawl Dir 表示存放爬取数据的文件夹
Num Round 表示爬取深度
(b) 分步抓取 分步抓取可以通过以下步骤实现:
第 6 页 本科毕业设计说明书
2。2Hadoop 简介
图 2。2 nutch 分步抓取流程图
Apache Hadoop 是一个开源软件框架,用于在用商业硬件制造的计算机集群上的大数据 的分布式存储和分布式处理[15]。Hadoop 所有模块的设计都遵循一个基本的假设:硬件故障是 经常发生的,应该由框架自动处理。文献综述
Apache Hadoop 的核心由一个叫 Hadoop 分布式文件系统(Hadoop Distributed File System, HDFS)的存储部分和一个叫 MapReduce 的处理部分构成[16]。Hadoop 将大容量文件拆分成数 据块,然后在一个集群上的结点之间分发这些拆分的数据块。出于数据处理的需求,Hadoop 根据需要被处理的数据向结点并行发送打包代码。这种方法利用了数据局部性优势(即由结点 操作结点能够访问到的数据),相对于传统的依赖于并行文件系统的超级计算机体系结构, Hadoop 对数据集的处理更加高效,而 Hadoop 系统中的计算和数据通过高速网络分布在分布 式文件系统中。
如图 2。2 所示,Apache Hadoop 框架由以下几个模块组成:
Hadoop Common 模块:包含其它 Hadoop 模块所需的库和实例。
本科毕业设计说明书 第 7 页 模块:一个在商业机器上存储数据的分布式文件系统,为整个集群提供高速的总带宽。 Hadoop YARN 模块:一个资源管理平台,负责管理集群中的计算资源,并使用计算资源
调度用户应用程序。
Hadoop MapReduce 模块:一个 MapReduce 程序实例,用于大规模数据处理。
2。3 solr 简介
图 2。3 Hadoop 集群结构图
Solr 是一款基于 Apache Lucene 工程的通过 java 编写的开源企业搜索引擎(加入文献)。 其主要功能包括标识高亮、全文检索、动态聚类、分面搜索、实时索引、数据库集成、NoSql 支持和富文本处理[6]。Solr 引擎具有很强的扩展性和容错性,并且能够提供分布式搜索和索 引复制等功能。Solr 是继 Elasticsearch 之后第二大最受欢迎的企业级搜索引擎。