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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值