原文地址: http://www.infoq.com/cn/articles/nioche-apache-nutch2
开源的Web搜索框架Apache Nutch的2.1版本已于2012年10月5日发布,该版本的新特性包括:支持一些改进属性,用于更好地配置Solr;更新到各个Gora依赖;可以选择构建弹性搜索中的索引。Nutch既可以运行在单台服务器上,也可以用作大规模抓取平台运行在Hadoop集群上。
Nutch框架的2.0版本在经历了两年开发之后,已于今年7月发布,该版本以Apache Gora框架作为其存储抽象而构建。Apache Gora开源框架提供了一种内存数据模型,并支持大数据的持久化。它支持将数据持久化到列存储、键值存储、文档存储和关系数据库中,还可以利用大量Apache Hadoop的MapReduce支持工具来分析数据。在今年早些时候,Gora已成为Apache的顶级项目。
Nutch 2支持大数据存储方案,如分布式键值存储Apache Accumulo、数据序列化系统Apache Avro、列族数据存储Apache Cassandra、分布式大数据存储Apache HBase和Hadoop分布式文件系统(HDFS)。
InfoQ:Apache Nutch framework的哪些方面使其适合NoSQL数据库和大数据领域?
Julien:Nutch的确是被打上了“大数据”的标签。一方面,Apache Hadoop就是产生自Nutch项目,而Apache Hadoop现在已经是用于大规模数据处理的事实上的标准框架。Nutch是为大规模Web数据抓取而设计的。有些用户使用由数以百计的服务器组成的集群来运行Nutch并保存了数十亿的页面。
至于它与NoSQL的关系,这正是Nutch 2要解决的问题。Nutch 1.x分支依赖于Hadoop数据结构,这非常适合批处理任务;而Nutch 2则依赖于Apache GORA来提供一个在各种NoSQL数据存储之上的统一前端。
InfoQ:Apache Gora框架也是出自Nutch项目。作为NoSQL数据库的一个ORM框架,你能否谈论一下它对应用程序开发人员有何帮助?
Julien:我喜欢把GORA当作“NoSQL数据库的JDBC”,因为它在存储之上提供了一层抽象,允许开发者编写独立于任何特定API的代码。GORA的部分API也提供了一种在不同后端之上的MapReduce API,此外还有一种基于Apache AVRO的序列化机制。当然,它也支持基本的GET-PUT-DELETE等原子操作。
Apache GORA现在是2.1版本了,支持HBase、Cassandra和Accumulo等数据存储,而且它还有一个SQL模块!这意味着用户可以在MySQL数据库之上运行MapReduce,一些Nutch 2用户正是这么做的。实际上,通过Nutch 2我们也发现,人们喜欢不同的存储方式,因此GORA是非常有用的。
InfoQ:最新的版本也支持HTML解析,这是利用Apache Tika框架来处理的。你能详细描述一下这一特性是如何工作的吗?
Julien:Apache Tika是一个用Java实现的开源库,支持从多种格式中(如HTML、PDF和Word等)抽取文本和元数据,也能用于语言和MIME类型识别。 实际上它就是现有的第三方解析器(如PDFBox)的包装器,只是提供了一个统一的API来使用这些解析器。在Nutch 1.x分支和Nutch解析器遗留系统中,Tika已经有所应用了,因此它并不是Nutch 2.0中的新东西。有趣的是,就像Hadoop和GORA一样,Apache Tika是也是一个脱胎于Nutch的项目。
InfoQ:在即将发布的版本和特性方面,Nutch项目未来的路线图是什么样的?
Julien: Nutch的发布并没有遵循一个严格的时间表。基本上是这样,当我们认为大部分工作已经完成时,就会发布新的版本,而工作的完成又要依赖于有多少贡献者参与和用户最快要多久才能采用新项目等因素。Nutch 1.x和2.x必定会共存一段时间,直到2.x完全成熟为止。尽管如此,它们的发布不太可能完全同步。近来,我们平均每年发布两个版本,但随着2.x版吸引力的增加,我们可能会加快新版本发布的频率。
至于特性,最重要的一个就是升级到SOLR 4,再就是它的云功能。我们可能也会看到更多的功能将委托给第三方项目,比如Crawler Commons,这样其他项目就能复用并改进代码了。我们也考虑过将索引后端变为可插拔的:虽然目前只支持SOLR(2.x版支持ElasticSearch),但是我们希望开发者能够使用插件机制编写新的索引后端,这样就无需捆绑Nutch代码了。把网页排名功能交给Apache Giraph等图库,我们可以少编写很多代码,而且更有效率。我希望将大部分精力放在巩固2.x的代码上。
他也谈到了完成这一项目所用的十年:
Julien:Apache Nutch最近已经10岁了,对软件而言,这已经算很老了。为什么它仍然存在呢?我想原因是,它能够把要做的事情做好,并且没有试图重复发明轮子。有趣的是,现在很多源自Nutch的项目,如Hadoop或Tika等,它们的发展也让Nutch获益匪浅。我希望这一切也会出现在GORA身上。Nutch 2的开发非常激动人心,而且我们看到非常多的新用户选择了它。在开发过程中,不断有新的贡献者和提交者加入进来,而这正是一个项目健康的标志。
7月份,Apache Nutch团队宣布发布了Nutch v1.5.1。这是Nutch 框架1.5.x主干版本的一个维护性发布。具体信息见该版本的修改列表。该搜索框架可以从网络上下载。Nutch的文档和教程等资料请参见项目的wiki页面。
关于被采访人
查看英文原文:Julien Nioche on Apache Nutch 2 Features and Product Roadmap