分布式爬虫nutch2.0初体验------三大亮点

  实在是等不及了,下了开发版的nutch2.0来玩玩,nutch2.0有什么不同呢?从官网wiki(见参考资料)可看到,主要是以下几个方面:

1.抽象存储层

   把存储层抽象出来,不仅像之前那样可以存放在hdfs上,也可以存在其它nosql中,如:hbase,cassandra,或关系数据库。

2.精简插件

   之前是差不多是一种文件使用一个插件来进行解析,现在主要是使用Tika来解析各种文档(见:http://wiki.apache.org/nutch/TikaPlugin),tika是个强大的文档处理库,网上常见的文档(etc html、pdf、word、excel、powerpoint... )它都可以解析。

3.提取爬虫的公共功能

   可把url过滤,url状态控制,索引去重,这些公共爬虫功能提取出来,供其它爬虫或相似项目(如:bixo, heritrix,droids)使用,就像tika被提取出来作为各种文档的解析工具那样。

4.抽象索引过程

   提供一个轻量级的抽象层来整合来自其它搜索框架的索引/搜索功能,nutch2.0最终只是把文档从DOM转化为NutchDocument,去掉搜索、索引的功能,交给第三方做。

5.重写solr索引去重

   所有操作都通过webtable来进行,同时避免从solr中检索数据。

6.各种新功能

   如:支持网站地图,规范标签,更好控制跳转,发现重复网站,web图管理工具等。

下面是开发版的三个亮点: 亮点 1 支持多种持久化层

   从nutch2.0的源码来看,存储层已经换成了gora,gora是apache的一个项目,主要是作为nosql的orm框架(也支持sql),目前支持hbase,cassandra,accumulo(美国国家安全局(NSA)向Apache基金会捐赠了一个新数据库项目,提供了细粒度访问控制,来头不小),和关系数据库(开发中,功能未完善)。gora项目地址:http://gora.apache.org

亮点 2 restful风格的服务接口

   nutch2.0可以把nutch作为一个爬虫服务,通过rest接口管理爬虫状态,绝对是个好东西。

亮点 3 简化解析插件

   nutch2.0使用tika库来解析各种文档,tika库封装了常用文档的解析类(如:poi,pdfbox这些),配置插件时只需配置解析html和tika就行了,方便了很多。

   目前的开发版索引和搜索的抽象层还没有开发出来,主要还是使用solr作为主要的索引/搜索支撑,其它上面提到的特性不知道实现了没有,要看看源码知道。

   添加了对nosql存储层的支持,nutch和google原先的模型很像了,google的分布式文件系统GFS,nutch的HDFS,同样是使用mapreduce算法处理,存储层google的bigtable,nutch的hbase、cassandra、accumulo(三个nosql都是基于bigtable论文)。不过这些都差不多是google十年前的技术了,现在不知道改进了多少,还是期待nutch2.0早日发布。