`
xtuali
  • 浏览: 12158 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Nutch2.1的Crawler源码解读

阅读更多


运行Crawler.java时,程序经过五个步骤:InjectJobFetcherJobParserJobDbUpdaterJobSolrIndexerJob,这五个类都是实现了org.apache.hadoop.util.Tool接口,切换各个任务都是通过runTool(<? Extends Tool>Tool.class, args)方法来调用,该接口中只有一个run(String[])的方法。同时该接口继承了一个父接口org.apache.hadoop.conf. ConfigurableConfigurable接口有两个方法:

void setConf(Configuration conf)

Configuration getConf();

Crawlermain方法源码如下:

 

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:对抓取的内容进行索引

将在后面进行上述六个步骤的源码解读

0
0
分享到:
评论
2 楼 Faeries 2013-03-15  
wangwei3 写道
鼓励博主继续写~
太不详细了。。。
1 楼 wangwei3 2013-02-20  
鼓励博主继续写~

相关推荐

    nutch2.1最新svn打包

    这个“nutch2.1最新svn打包”资源包含的是Nutch 2.1的最新源代码版本,通过Subversion (SVN) 版本控制系统获取并打包的完整资源。 Nutch的核心功能包括: 1. **网络爬虫**:Nutch使用了一种基于链接分析的爬行策略...

    nutch2.1缺少包org.restlet-2.0.5.jar

    nutch2.1导入Eclipse过程中,import org.restlet.×;错误,缺少的包。

    nutch2.1缺少包org.restlet.ext.jackson.jar

    nutch2.1导入Eclipse过程中,import org.restlet.×;错误,缺少的包。

    apache-nutch-2.1

    Nutch 2.1 版本是其发展过程中的一个重要里程碑,提供了许多改进和优化,使其在大数据处理和分布式计算方面表现出色。 1. **Nutch 架构**: Nutch 采用模块化设计,主要包括以下几个核心部分: - **Fetcher**:...

    nutch2.2.1安装步骤.docx

    Apache Nutch 是一个开源的网络爬虫框架,用于抓取互联网上的网页并建立索引,以便进行全文搜索。Nutch 2.2.1 是一个稳定版本,它依赖于其他几个组件来完成其功能,包括 Apache Ant、Apache Tomcat、Java 开发工具包...

    nutch-2.1源代码

    Nutch-2.1是Apache Nutch的一个特定版本,它是一个用Java编写的开源搜索引擎软件。这个项目的主要目标是提供一套高效、可扩展的搜索引擎工具,使得用户可以在自己的环境中搭建和运行自己的搜索引擎。Nutch不仅仅是一...

    nutch-1.5.1源码

    Nutch-1.5.1源码是Apache Nutch项目的一个重要版本,它是一个高度可扩展的、开源的网络爬虫和全文搜索引擎框架。Nutch最初由Doug Cutting创建,后来成为了Hadoop项目的一部分,因为其在大数据处理和分布式计算方面的...

    nutch_src 源码 tar—zip格式

    《Nutch源码分析——深入理解tar和zip格式》 Nutch是一款开源的网络爬虫项目,它在大数据处理和搜索引擎构建领域具有广泛的应用。本文将深入探讨如何获取和理解Nutch的源码,以及涉及的tar和zip两种常见的文件压缩...

    apahce-nutch-2.1

    Nutch的版本2.1是一个成熟的版本,包含了多个改进和优化,使其在处理大规模网页抓取和索引时表现卓越。 Nutch的主要组件包括: 1. **Web爬虫**:Nutch的爬虫负责自动遍历互联网上的网页。它通过跟踪HTML中的链接...

    nutch-1.9 源码

    Nutch-1.9 是一个开源的网络爬虫软件,被广泛用于数据挖掘、搜索引擎构建以及网络信息提取。它的最新版本提供了许多改进和优化,使得它成为开发者和研究者手中的利器。Nutch的设计目标是易用性和可扩展性,允许用户...

    lucene+nutch搜索引擎开发源码1

    《lucene+nutch搜索引擎开发源码1》是一个包含开源搜索引擎项目Lucene和Nutch源代码的压缩包,主要针对搜索引擎开发的学习和实践。这个压缩包是书籍《lucene+nutch搜索引擎开发》的一部分,由于源码量较大,因此分为...

    nutch-1.3源码

    在 Nutch-1.3 的源码中,我们可以深入理解其工作原理和核心组件。源码分析可以帮助我们掌握以下关键知识点: 1. **网络爬虫框架**:Nutch 提供了一个完整的爬虫框架,包括种子 URL 的管理、网页的抓取、下载、解析...

    Lucene nutch 搜索引擎 开发 实例 源码

    本文将深入探讨基于Java的开源搜索引擎框架——Lucene和Nutch,以及如何通过源码学习它们的开发实践。 Lucene是一个全文检索库,它提供了一个简单的API,开发者可以使用这些API来构建自己的搜索功能。Lucene的核心...

    Lucee+Nutch搜索(源码2)

    其他源码在: Lucee+Nutch搜索(源码1)那里,因为文件太大了.  12.5 企业信息索引   12.5.1 数据索引建立   12.5.2 信息检索代码   12.5.3 检索Web代码   12.5.4 检索结果测试   12.6 小结

    apache-nutch的源码

    Nutch 源码的分析和理解对于想要深入研究搜索引擎工作原理、网页抓取技术和大数据处理的开发者来说至关重要。 在`apache-nutch-2.2.1`这个压缩包中,你将找到以下关键组成部分: 1. **源代码结构**:Nutch 的源...

    nutch1.6源码

    Nutch 1.6源码的获取方式不仅可以通过下载这个压缩包,还可以直接从Nutch的官方网站获取。 Nutch的源码分析主要涉及以下几个关键知识点: 1. **网络爬虫**:Nutch的核心功能是作为一个网络爬虫,它自动遍历互联网...

    Nutch 1.2源码阅读

    ### Nutch 1.2 源码阅读深入解析 #### Crawl类核心作用与流程概览 在深入了解Nutch 1.2源码之前,我们先明确Nutch的架构和工作流程。Nutch作为一款开源搜索引擎框架,其功能涵盖网页抓取、索引构建以及查询处理。...

    myeclipse8.5导入nutch1.2源码

    ### MyEclipse 8.5 导入 Nutch 1.2 源码的知识点详解 #### 一、背景介绍 Nutch 是一个高度可扩展且开放源代码的网络爬虫项目,由 Apache 软件基金会维护。它不仅能够抓取网页,还能进行全文检索,通常运行在 Linux...

Global site tag (gtag.js) - Google Analytics