Nutch-0.9源代码:NutchConfiguration类

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文件中。


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值