运行Crawler.java时,程序经过五个步骤:InjectJob、FetcherJob、ParserJob、DbUpdaterJob、SolrIndexerJob,这五个类都是实现了org.apache.hadoop.util.Tool接口,切换各个任务都是通过runTool(<? Extends
Tool>Tool.class, args)方法来调用,该接口中只有一个run(String[])的方法。同时该接口继承了一个父接口org.apache.hadoop.conf.
Configurable,Configurable接口有两个方法:
void setConf(Configuration conf)
Configuration getConf();
Crawler的main方法源码如下:
public static void main(String[] args) throws Exception {
Crawler c = new Crawler();
Configuration conf = NutchConfiguration.create();
int res = ToolRunner.run(conf, c, args);
System.exit(res);
}
解读:
在上面一段代码中conf变量贯穿整个程序运行的始终,NutchConfiguration.create()加载nutch的标准配置文件,nutch-default.xml以及nutch-site.xml,首先加载nutch-default.xml,然后再加载nutch-site.xml,如果nutch-site.xml中有申明一些property,那么将覆盖nutch-default.xml中德property配置。
真正执行程序就是ToolRunner.run(conf, c, args)了:
public static int run(Configuration conf, Tool tool, String[] args)
throws Exception{
if(conf == null) {
conf = new Configuration();
}
//将args(我们在命令行输入的命令参数进行转换)
GenericOptionsParser parser = new GenericOptionsParser(conf, args);
//set the configuration back, so that Tool can configure itself
tool.setConf(conf);
//get the args w/o generic hadoop args
String[] toolArgs = parser.getRemainingArgs();
return tool.run(toolArgs);
}
解读:
tool.run(toolArgs)会返回Crawler中,调用run(String[])方法,这个方法比较简单,主要是讲toolArgs中的值进行处理,获取option的值,同时将toolArgs中的参数转换成Map类型,调用run(Map)方法,在这个方法内部就是真正进行爬取了。
这方法内部,共进行了五个步骤:
1、InjectJob:从参数中的seedDir中获取种子文件的路径,放到抓取链中
2、GeneratorJob:从抓取链获取链接,放入抓取队列
3、FetcherJob:从抓取队列中获取任务开始进行抓取
4、ParserJob:对抓取的网页进行解析,产生新的链接和网页解析结果
5、DbUpdaterJob:将新的链接更新到抓取链中
6、SolrIndexerJob:对抓取的内容进行索引
将在后面进行上述六个步骤的源码解读
分享到:
相关推荐
这个“nutch2.1最新svn打包”资源包含的是Nutch 2.1的最新源代码版本,通过Subversion (SVN) 版本控制系统获取并打包的完整资源。 Nutch的核心功能包括: 1. **网络爬虫**:Nutch使用了一种基于链接分析的爬行策略...
nutch2.1导入Eclipse过程中,import org.restlet.×;错误,缺少的包。
nutch2.1导入Eclipse过程中,import org.restlet.×;错误,缺少的包。
Nutch 2.1 版本是其发展过程中的一个重要里程碑,提供了许多改进和优化,使其在大数据处理和分布式计算方面表现出色。 1. **Nutch 架构**: Nutch 采用模块化设计,主要包括以下几个核心部分: - **Fetcher**:...
Apache Nutch 是一个开源的网络爬虫框架,用于抓取互联网上的网页并建立索引,以便进行全文搜索。Nutch 2.2.1 是一个稳定版本,它依赖于其他几个组件来完成其功能,包括 Apache Ant、Apache Tomcat、Java 开发工具包...
Nutch-2.1是Apache Nutch的一个特定版本,它是一个用Java编写的开源搜索引擎软件。这个项目的主要目标是提供一套高效、可扩展的搜索引擎工具,使得用户可以在自己的环境中搭建和运行自己的搜索引擎。Nutch不仅仅是一...
Nutch-1.5.1源码是Apache Nutch项目的一个重要版本,它是一个高度可扩展的、开源的网络爬虫和全文搜索引擎框架。Nutch最初由Doug Cutting创建,后来成为了Hadoop项目的一部分,因为其在大数据处理和分布式计算方面的...
《Nutch源码分析——深入理解tar和zip格式》 Nutch是一款开源的网络爬虫项目,它在大数据处理和搜索引擎构建领域具有广泛的应用。本文将深入探讨如何获取和理解Nutch的源码,以及涉及的tar和zip两种常见的文件压缩...
Nutch的版本2.1是一个成熟的版本,包含了多个改进和优化,使其在处理大规模网页抓取和索引时表现卓越。 Nutch的主要组件包括: 1. **Web爬虫**:Nutch的爬虫负责自动遍历互联网上的网页。它通过跟踪HTML中的链接...
Nutch-1.9 是一个开源的网络爬虫软件,被广泛用于数据挖掘、搜索引擎构建以及网络信息提取。它的最新版本提供了许多改进和优化,使得它成为开发者和研究者手中的利器。Nutch的设计目标是易用性和可扩展性,允许用户...
《lucene+nutch搜索引擎开发源码1》是一个包含开源搜索引擎项目Lucene和Nutch源代码的压缩包,主要针对搜索引擎开发的学习和实践。这个压缩包是书籍《lucene+nutch搜索引擎开发》的一部分,由于源码量较大,因此分为...
在 Nutch-1.3 的源码中,我们可以深入理解其工作原理和核心组件。源码分析可以帮助我们掌握以下关键知识点: 1. **网络爬虫框架**:Nutch 提供了一个完整的爬虫框架,包括种子 URL 的管理、网页的抓取、下载、解析...
本文将深入探讨基于Java的开源搜索引擎框架——Lucene和Nutch,以及如何通过源码学习它们的开发实践。 Lucene是一个全文检索库,它提供了一个简单的API,开发者可以使用这些API来构建自己的搜索功能。Lucene的核心...
其他源码在: Lucee+Nutch搜索(源码1)那里,因为文件太大了. 12.5 企业信息索引 12.5.1 数据索引建立 12.5.2 信息检索代码 12.5.3 检索Web代码 12.5.4 检索结果测试 12.6 小结
Nutch 源码的分析和理解对于想要深入研究搜索引擎工作原理、网页抓取技术和大数据处理的开发者来说至关重要。 在`apache-nutch-2.2.1`这个压缩包中,你将找到以下关键组成部分: 1. **源代码结构**:Nutch 的源...
Nutch 1.6源码的获取方式不仅可以通过下载这个压缩包,还可以直接从Nutch的官方网站获取。 Nutch的源码分析主要涉及以下几个关键知识点: 1. **网络爬虫**:Nutch的核心功能是作为一个网络爬虫,它自动遍历互联网...
### Nutch 1.2 源码阅读深入解析 #### Crawl类核心作用与流程概览 在深入了解Nutch 1.2源码之前,我们先明确Nutch的架构和工作流程。Nutch作为一款开源搜索引擎框架,其功能涵盖网页抓取、索引构建以及查询处理。...
### MyEclipse 8.5 导入 Nutch 1.2 源码的知识点详解 #### 一、背景介绍 Nutch 是一个高度可扩展且开放源代码的网络爬虫项目,由 Apache 软件基金会维护。它不仅能够抓取网页,还能进行全文检索,通常运行在 Linux...