雅虎架构师谈MapReduce和Hadoop的未来

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版本就将这些落实。

相关推荐