`
billy_zh
  • 浏览: 61734 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Nutch-0.9源代码:NutchConfiguration类

阅读更多

出处: http://hi.baidu.com/shirdrn/blog/item/a4934f116b575018b8127b72.html

org.apache.nutch.util.NutchConfiguration类是Nutch爬虫的配置类,其中包括爬虫的初始化配置和运行时配置。说到NutchConfiguration类,我认为有必要提到Hadoop的Configuration类,即org.apache.hadoop.conf.Configuration。在Nutch早期开发版本中,Hadoop是Nutch项目的一部分,其中Hadoop主要包含两个部分:一个是HDFS(Hadoop分布式文件系统),当然Hadoop中也支持单机文件系统,另一个是Hadoop实现了Google的MapReduce算法,这是一个非常经典的算法。Nutch项目也是基于Hadoop的这两点来实现。


Hadoop文件系统,通过它的配置文件你就可以了解它都具有哪些参数,也大致能从这些参数中了解到该文件系统配置的灵活性,其中,对应的配置类为org.apache.hadoop.conf.Configuration类,该配置类主要是根据配置文件hadoop-default.xml和hadoop-site.xml来进行创建文件系统,hadoop-default.xml是默认的配置文件,在Nutch中,通过配置hadoop-env.sh来设置环境变量,通过配置hadoop-site.xml文件,来配置Nutch所基于的文件系统。


Configuration类就是针对hadoop-default.xml和hadoop-site.xml文件的,里面实现了解析配置文件,其中hadoop-default.xml是默认的,里面配置的内容已经是一个完整的配置。如果配置了hadoop-site.xml文件,系统在初始化Configuration配置类实例的时候,会首先加载默认的hadoop-default.xml文件中的配置,然后读取hadoop-site.xml文件,如果不是空配置,就用该配种文件中的配置来覆盖掉默认的配置。


Configuration类中主要实现了如下一些操作:解析配置文件、设置运行时配置参数、获取配置参数。

NutchConfiguration类是在创建一个Configuration配置实例的基础上,根据Nutch运行的需要,在Configuration实例的基础上进一步进行了配置,如下所示:

public static Configuration create() {
    Configuration conf = new Configuration();
    addNutchResources(conf);
    return conf;
}

将Configuration类的实例作为参数,调用addNutchResources方法,在Configuration类的实例现有配置的基础上,增加了 Nutch的配置,addNutchResources方法如下所示:

public static Configuration addNutchResources(Configuration conf) {
    conf.addDefaultResource("nutch-default.xml");
    conf.addFinalResource("nutch-site.xml");
    return conf;
}

同样,nutch-default.xml是Nutch默认的配置,可以配置nutch-site.xml来覆盖默认的配置nutch-default.xml。

其实,在org.apache.nutch.crawl.Crawl类中可以看到,Nutch的配置其实就是在Configuration的基础上进行更加详细配置,只要需要,就可以向Configuration中添加自定义的配置文件,因为Configuration类对配置文件的解析与读取都做了很好的实现。


因为在Nutch-0.9中使用了Hadoop-0.12.2,这个版本的Hadoop与更高版本的Hadoop不同,在Configuration中就能看到,在0.12.2版本中将两类配置分开存放,分别放在两List列表中:

public Configuration() {
    if (LOG.isDebugEnabled()) {
      LOG.debug(StringUtils.stringifyException(new IOException("config()")));
    }
    defaultResources.add("hadoop-default.xml");
    finalResources.add("hadoop-site.xml");
}

其中final表示在Nutch爬虫运行过程中,对应final配置的参数是在hadoop-site.xml中,这里,首先解析加载hadoop-default.xml中配置的参数,如果hadoop-site.xml中重写了某些参数,就要用hadoop-site.xml中的参数覆盖掉hadoop-default.xml中对应参数的配置。final的含义也就是最终生效的配置要由hadoop-site.xml中的配置来看(如果hadoop-site.xml中进行配置)。


而到了0.18.0版本中,直接放到了同一个List中,但都是在Configuration类将final参数区分开来。

在在org.apache.nutch.crawl.Crawl类中,可以看到又增加了一个crawl-tool.xml配置:

    Configuration conf = NutchConfiguration.create();
    conf.addDefaultResource("crawl-tool.xml");

crawl-tool.xml也是一个默认的配置,它的配置项内容和nutch-site.xml以及nutch-default.xml中的是同等的,如果需要修改crawl-tool.xml配置文件,不允许修改该文件,而是将修改后的配置写入到nutch-site.xml文件中。

分享到:
评论
1 楼 952222 2009-08-04  
我想问个问题,就是NUTCH在搜索具有交叉字的词语时,会有错误。查询其它的词语的时候没有问题。不知道为什么,可以教我一下吗?比如说搜索“互联网”,由于它可以切成“互联”和“联网”组成的,共享了一个“联”,所以有那个错误。请帮忙看一下呀。谢谢咀

java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
org.apache.nutch.searcher.FetchedSegments.getSummary(FetchedSegments.java:285)
org.apache.nutch.searcher.NutchBean.getSummary(NutchBean.java:325)
org.apache.jsp.searchs_jsp._jspService(searchs_jsp.java:292)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

相关推荐

    Eclipse中编译Nutch-0.9

    ### Eclipse中编译Nutch-0.9:详解与步骤 #### 核心知识点概览 在本篇文章中,我们将深入探讨如何在Eclipse环境中编译Nutch-0.9,一个开源的网络爬虫项目,用于抓取互联网上的网页信息。文章涵盖的关键知识点包括...

    nutch-0.9 环境搭建所需最小cygwin

    1. **下载Nutch源码**:首先,从Apache官方网站或者镜像站点下载Nutch-0.9的源代码。将下载的源码解压到你想要的工作目录下,例如`C:\nutch\src\nutch-0.9`。 2. **配置环境变量**:打开Cygwin终端,设置必要的环境...

    nutch-2.1源代码

    在研究和使用Nutch-2.1源代码时,你可以深入了解搜索引擎的各个组成部分,如爬虫的实现、索引过程的细节、查询处理的算法等,这对于提升自己的搜索引擎技术知识非常有帮助。同时,Nutch也是研究搜索引擎优化(SEO)...

    apache-nutch-1.6-bin.tar.gz最新版

    在e盘下面出现nutch-0.9文件夹说明解压成功了.然后环境变量设置为NUTCH_JAVA_HOME=C:\Program Files\Java\jdk1.5.0(也就是说跟JAVA_HOME是相同的).测试nutch是否安装成功,只需要执行以下命令: $cd D:/Downloads/...

    apache-nutch-2.3.1-src.tar.gz

    `apache-nutch-2.3.1-src.tar.gz` 是 Apache Nutch 的源代码包,版本号为 2.3.1,以 tar.gz 格式压缩。 这个压缩包中包含的主要文件和目录结构如下: 1. **src**: 这是 Nutch 的源代码存放位置,分为多个子目录,...

    windows下nutch的安装.pdf

    安装完上述依赖后,将Nutch的源代码包下载到本地,解压至指定目录,如C:\nutch-0.9。解压后,需要修改nutch-site.xml文件以配置Nutch运行时的相关参数,例如配置抓取的用户代理名称: ```xml <name>...

    apache-nutch-2.2.1(Eclipse直接运行版)001

    apache-nutch-2.2.1(Eclipse直接运行版)今天刚做的,发现有很多坑,分享给大家实验,JDK1.7 Win10。我分享的两个压缩卷一起下载才可以用,资源限制太小了 002地址:...

    apache-nutch-1.4-bin.tar.gz

    在这个"apache-nutch-1.4-bin.tar.gz"压缩包中,包含了运行 Nutch 的所有必要组件和配置文件,适合初学者和开发者快速部署和实验。 **Nutch 的核心组成部分:** 1. **爬虫(Spider)**:Nutch 的爬虫负责在网络中...

    nutch-windows-script:在 Windows 上运行 Nutch 的简单脚本

    - **Git**:获取nutch-windows-script项目的源代码。 - **Cygwin**或**Git Bash**:提供类似于Linux的命令行环境。 安装完这些依赖后,你可以按照以下步骤操作: 1. **克隆项目**:使用Git从GitHub上克隆“nutch-...

    apache-nutch-1.7-src.tar.gz

    在“apache-nutch-1.7-src.tar.gz”这个压缩包中,你将获得Nutch 1.7的源代码,这使得开发者可以深入了解其工作原理,并对其进行定制和扩展。解压后的文件夹“apache-nutch-1.7”包含了所有必要的组件和配置文件。 ...

    nutch-web-api:用于 Apache Nutch 抓取应用程序的 RESTFul API

    nutch-web-api 它是什么 nutch-web-api是 Apache Nutch 爬虫应用程序的 RESTFul API 实现。 这个项目完全是用 node.js 和 coffeescript 编写的,目的是简化使用并提高灵活性。 REST API 不是 apache nutch 应用程序...

    apache-nutch-1.4

    - **配置文件**:Nutch的运行依赖于一系列配置文件,如`conf/nutch-site.xml`,用户可以通过修改这些文件来定制爬虫行为。 - **插件系统**:Nutch支持丰富的插件体系,如URL过滤器、解析器、索引器等,开发者可以...

    nutch配置nutch-default.xml

    nutch配置nutch-default.xml

    apache-nutch-1.3-src.tar.gz_nutch_nutch-1.3.tar.gz

    这个源码包 "apache-nutch-1.3-src.tar.gz" 和 "nutch-1.3.tar.gz" 包含了 Nutch 1.3 的源代码和编译后的二进制文件,对于开发者和研究者来说是非常有价值的资源。 **Nutch 概述** Nutch 是基于 Java 开发的,遵循 ...

    nutch 0.9 版(包含war,bin,src可直接部署使用)

    然后,根据项目需求,可以编辑配置文件(如conf/nutch-site.xml)来定制爬虫行为,如设置爬取策略、抓取频率、存储路径等。 7. **扩展性与集成**: Nutch的设计使其易于与其他系统集成,比如可以与Hadoop结合实现...

    Eclipse中编译Nutch-1.0

    接下来,需从官方网站下载Nutch-1.0的源代码压缩包(`nutch-1.0.tar.gz`),并进行解压。随后,在Eclipse中创建一个新的Java项目,命名可自定义,如“Nutch”,并在创建过程中选择“从现有源代码创建项目”选项,...

    apach-nutch-1.9-bin.tar.gz

    4. **配置与部署**:解压 "apache-nutch-1.9" 文件后,需要根据你的环境配置`conf/nutch-site.xml`文件,设置包括抓取间隔、并发度、存储路径等参数。同时,可能还需要配置`conf/regex-urlfilter.txt`和`conf/...

    apache-nutch-1.6-src.tar.gz

    这个`apache-nutch-1.6-src.tar.gz`文件包含了Nutch 1.6的源代码,允许开发者深入研究其内部机制,定制自己的爬虫需求,或者为项目贡献代码。 源代码包`apache-nutch-1.6`中通常包含以下几个关键部分: 1. **源...

    nutch 0.9分页代码(粘贴可用)

    ### Nutch 0.9 分页代码解析与应用 #### 一、背景介绍 Nutch 是一个开源的网络爬虫项目,它提供了高度可扩展且可靠的网页抓取框架。随着互联网的发展,数据量日益增大,如何高效地处理这些数据成为了一个重要的...

    Nutch1.7二次开发培训讲义

    - **环境变量配置:** 在项目属性中配置构建路径,添加源代码文件夹(src/java, src/test, src/testresources)以及配置类库路径(build和conf)。 **3. Ivy依赖管理** - **配置:** 使用IvyDE插件管理项目依赖,包括主...

Global site tag (gtag.js) - Google Analytics