开源的 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 项目的副总裁 Julien Nioche,他也是 DigitalPebble Ltd 的主管。他将于 2012 年 11 月 7 日在 Apache Conference Europe 上介绍如何使用 Nutch 框架进行大规模抓取。
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是 DigitalPebble Ltd 的创始人,这是一家位于英国布里斯托尔的咨询公司,专注于为文本工程提供开源解决方案。Julien 的专长涉及信息检索、文本分析、信息抽取、自然语言处理和机器学习等领域。他还是 Apache Nutch 项目的副总裁、Apache Tika 和 Apache Gora 的提交者以及其他一些开源项目的贡献者。
查看英文原文: Julien Nioche on Apache Nutch 2 Features and Product Roadmap
评论