Hadoop 是一个开源的分布式计算平台,它主要由 MapReduce 的算法执行和一个分布式的文件系统等两部分组成。InfoQ 曾经刊登过一篇Jeremy Zawodny 写的有关Hadoop 速度提升的综述性文章。这次InfoQ 的资深Java 编辑Scott Delap 和Hadoop 项目负责人Doug Cutting 进行了一次专访。在这次InfoQ 的专访中,Cutting 论述了Hadoop 是如何在Yahoo 中被使用的,以及Hadoop 发展中遇到的挑战和Hadoop 项目未来的发展方向。
Scott Delap(SD):Hadoop 已经作为正式产品服务于 Yahoo 的某些功能了吗?如果还没有,有什么计划让 Hadoop 从一个实验性的产品向核心基础组件迁移?
Doug Cutting(DC):Yahoo 定期在搜索业务上使用 Hadoop 来提高其产品和服务,如排名功能和目标广告等。除此之外,也有一些直接使用 Hadoop 进行数据生成的案例。Hadoop 的长期目标是提供世界级的分布式计算工具,也是对下一代业务(如搜索结果分析等)提供支持的 Web 扩展(web-scale)服务。
SD:Yahoo 负责 Hadoop 项目的团队的规模有多大?除了 Yahoo 内部人员,其余还有多少活跃的代码贡献者?
DC:Yahoo 有一个专项小组直接负责 Hadoop 的开发工作,而 Apache 开源项目的活跃贡献者一般都有自己的第一职业。即使如此,仍然有一些非 Yahoo 工作人员每月、每周甚至每天为 Hadoop 做出自己的贡献。
SD:相比 Google,Yahoo 坚持在可扩展的基础架构上采用不同途径。虽然 Google 已经发布了众多技术方面的论文,但其对普通大众意义并不十分明显。而为什么你觉得开源是正确的一个方向?
DC:开源项目得到最好的运行需要满足两个条件:第一,每个人对项目所能做的事有共同的认识。第二,有一套易理解的文档解决方案。由于基础架构软件在众多领域有广泛应用,所以此类开源软件发展的格外好。而 Yahoo 就在使用并支撑 FreeBsd、Linux、Apache、PHP 和 MySQL 等此类基础架构软件。让任何人都可以利用 Hadoop 来帮助 Yahoo 改善现状并提高目前建立大型分布式系统的水平。源代码仅仅只是难题的一小部分,除此之外,一个组织还需要有个非常强大的工程师团队来解决重大难题并使其付诸实践。有正确的发布和管理基础架构的能力也显得非常的重要。目前几乎没有哪家公司能拥有所有这些必需的资源。所以,软件工程师们都愿意为开源项目工作,他们能在巨大的社区中遇到许多志同道合的朋友,学到一些被共享的技巧并应用于今后的其他项目中。这样优秀的社区环境很容易培养出许多新的杰出工程师。Yahoo 和 Hadoop 社区都受益于这种合作的机制,更加懂得大规模的分布式计算所需要的东西,并且把我们专家的意见和技术都共享出来建立一个人人都能使用和修改的解决方案.
SD:回到技术的本身,近年随着 Hadoop 的不断发展,你觉得影响其速度和稳定性的要素是什么? 我发现现在 500 条记录的排序基准比去年快上了 20 倍,这是由于某个部分巨大的提升所至还是由多个部分的共同优化所带来的结果?
DC:在处理 Web 扩展服类软件过程中,随着使用此解决方案的其它公司和组织的不断增加,Yahoo 发现它们都获得相似的性能。Yahoo 决定将其开源,而非以私有软件的形式继续发展。所以 Yahoo 雇佣了我来带领这个项目。至今,Yahoo 已经贡献了绝大部分代码。
至于速度的提升,是过去几年努力成果的一个总和,并且已经经过了反复的试验。在给定规模的服务器集群中,我们能让系统非常平稳地运行,然后试验在两倍于这样规模的服务器集群中运行会发生什么情况。我们的目标是让性能随集群规模增长成线性增加。我们从这个过程中不断学习,并且再次增大集群的规模。每增大一次集群的规模,更多数量和更多种类的错误也将相应增加,因此稳定性将是个重大问题。
每一次这样做,我们都能明白哪些东西是可以达到的,哪些经验可以贡献给开源的网格计算公共知识库的。随着服务器集群规模的增大,各种新的故障不断产生,罕见的错误变为常见的错误,这些情况都是需要我们解决的。而这个过程所学到的又将影响到我们下一次这样反复的试验。
SD:去年起 Hadoop 就已经可以在 Amazon EC2 上运行了。这将使开发者可以快速搭建起他们自己的服务器集群。那么管理这样一个集群、HDFS 以及 MapReduce 的处理还有什么额外的工作需要做吗?
DC:Yahoo 有一个名为 HOD(Hadoop on Demand)的项目,它可以让 Mapreduce 运行在很普通的机器上。这还是一个正处于建设过程中的开源项目。由于运行一个大型的集群是非常复杂和受资源限制的事,所以 Amazon EC2 对于普通民众来说,是一个非常不错的接触 Hadoop 的平台。
SD:在 Hadoop 功能上你如何客观地和 Google 已发布的产品进行比较?在从程序单元到数据单元的优化解决过程中,有什么新特性吗?
DC:近十年来,很多大型公司(包括 Yahoo)和一些理论研究机构都在对大规模分布式计算软件进行开发和研究。而最近随着经济计算在消费市场的显现,这种开发和研究的兴趣更加高涨。与 Google 不同,Yahoo 采取了开发完全开源的 Hadoop,让任何人都可以免费使用和修改这个软件。Hadoop 的目标已经延伸到超越目前现存的任何技术复制品的地步。我们将致力于把 Hadoop 建立成一个对任何人都有用的系统。我们已经实现了大多数 Google 已经发布的东西,而且还加上很多其它没有提及到的。Yahoo 在这个项目中将扮演领导者的角色,因为它的目标和我们的需求是非常吻合的,并且我们明白共享这个技术给世界的意义。
SD:最新的官方版本是 0.13.1。在未来会有什么重大的新特性吗?1.0 版将完成什么样的一些工作。
DC:0.14.0 版就将有多达 218 处的变化。其中对系统最大的改变是我们直接改良了数据的完整性。这是一个对用户来说看不见的变化,但是它对于整个系统的未来发展来说是很有效的。由于数据和集群的规模,无论是内存还是磁盘都很频繁地出现问题,这将是个危机。我们还添加了改变文件时间的功能,还有一些 MapReduce 的 C++ API 函数,还增加了主机的一些其它特性,以及 bug 的定位和修复。
Hadoop 0.15.0 也正在成型,计划会有 88 处修改。这个版本会增加对文件系统的认证和授权,让同一服务器集群之间的信息访问变得更加安全。我们还计划修订大量的 Mapreduce 的 API。0.15.0 将是一个很有难度的版本,因为它需要用户对他们的应用做出修改,我们希望能一步到位。我们还希望 0.15 将是 1.0 以前的最后一个版本。在 1.0 以后我们就将会非常保守了,不会再突然做出巨大的改变。我们同样也会非常关注向后兼容的问题,对于 1.0 版本来说,这将显得更加的重要。任何为 1.0 版编写的代码也将继续可运行在 1.X 以后的版本。所以我们需要保证我们现有的 API 能轻松地扩展到以后的版本。我们将试着在 0.15 版本就将这些落实。
查看英文原文: Yahoo’s Doug Cutting on MapReduce and the Future of Hadoop
评论