`
xtuali
  • 浏览: 11972 次
  • 性别: 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缺少包org.restlet.ext.jackson.jar

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

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

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

    nutch2.1最新svn打包

    nutch最新2.1资源打包,配置nutch最新svn后更新打包的全资源

    nutch的源码解读和nutch入门

    学习nutch 源码解读 轻松入门 搭建自己的nutch搜索引擎

    nutch2.2.1安装步骤.docx

    nutch2.2.1安装步骤,需要自己下载以下软件: apache-ant-1.10.5-bin.tar.gz apache-nutch-2.2.1-src.tar.gz apache-tomcat-8.5.39.tar.gz jdk-8u201-linux-x64.tar.gz solr-4.10.3.zip

    nutch-2.1源代码

    Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。 本资源官网上下的源代码。 nutch-2.1 适用于windows系统

    nutch_src 源码 tar—zip格式

    nutch_src 源码 tar—zip格式

    apache-nutch的源码

    外网不能访问,故上传,一方面自己备份,一方面也方便大家不能下载的痛苦,只有nutch的源码,没有依赖包,如果需要依赖包,请自行下载

    apache-nutch-2.1

    apache-nutch-2.1,一个非常棒的搜索引擎!希望大家喜欢

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

    Lucene nutch 搜索引擎 开发 实例 源码 里面包含了Lucene的使用源码 以及nutch使用的源码 还有spider的使用源码 例子的注释比较详细~适合初学者

    nutch-1.3源码

    nutch-1.3源码,java版本,其他请参看手册。

    nutch-1.5.1源码

    Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。包含nutch-1.5.1的源码

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

    lucene+nutch搜索引擎开发一书源码第一部分,因为源码太大,所以分两部分。

    Lucee+Nutch搜索(源码2)

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

    nutch-1.9 源码

    好用的爬虫工具,刚发布不久的新版本 nutch是网络搜索及信息提取中使用得最广泛的网络爬虫工具 仅仅使用简单的配置就可以实现强大的爬取信息功能

    apahce-nutch-2.1

    Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己 的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。

    nutch1.6源码

    nutch1.6源码,直接从官网也可以下

    Lucene+Nutch搜索源码

    Lucene+nuctch一书的全部源码 测试源码 和几个简单的项目 (Lucene+ Nuctch a book all the source code and test a few simple items)

    apache-nutch-2.3.1 源码和构建好的库文件等 (part 2)

    Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己 的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。 尽管Web搜索是漫游Internet的基本要求, 但是现有web搜索引擎的数目却在下降. 并且这很有可能进一步...

    apache-nutch-2.3.1 源码和构建好的库文件等 (part 3)

    Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己 的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。 尽管Web搜索是漫游Internet的基本要求, 但是现有web搜索引擎的数目却在下降. 并且这很有可能进一步...

Global site tag (gtag.js) - Google Analytics