道格的账号
Hadoop是一个开放源代码的分布式计算平台,其中包括MapReduce和分布式文件系统的实现。 上个月,InfoQ 报道了 Jeremy Zawodny对去年Hadoop速度提高的概述。 InfoQ的首席Java编辑Scott Delap最近赶上了Hadoop项目的负责人Doug Cutting。 在本期InfoQ特别访谈中,Cutting讨论了Yahoo如何使用Hadoop,其开发面临的挑战以及该项目的未来方向。
Scott Delap(SD) :Hadoop是否已经在生产中用于Yahoo的任何功能? 如果不是的话,从实验技术转移到核心基础架构组件的计划是什么。
道格·切特(DC) :雅虎! 经常将Hadoop用于研究任务,以改善其产品和服务,例如排名功能,广告定位等。在某些情况下,产品直接使用Hadoop生成的数据。 Hadoop的长期目标是提供世界一流的分布式计算工具,这些工具将支持下一代Web级服务,例如分析Web搜索爬网数据。
SD :Yahoo的Hadoop团队有多大? 该项目有多少活跃的外部贡献者?
DC :雅虎! 拥有一支专注于Hadoop的开发人员团队,主要为Apache开源项目做出积极贡献。 还有少数非Yahoo!每天,每周或每月为Hadoop做出贡献的人。
SD :与Google相比,雅虎在可扩展基础架构方面采取了截然不同的方法。 尽管Google已发布了许多有关其技术的论文,但尚未公开供公众使用。 您为什么觉得开源方向是正确的方向?
DC :当每个人都对产品的生产达成共识,并且有可以解决的文档化解决方案时,开源才是最好的选择。 开源开发模型非常适合在许多领域具有广泛应用程序的基础架构软件。 我们已经在Yahoo!的许多软件中看到了这一点。 用途和支持:FreeBSD,Linux,Apache,PHP,MySQL等。
使这项技术可供任何人使用将有助于Yahoo,同时也有助于提高构建大型分布式系统的最新技术水平。 源代码只是难题的一部分。 一个组织仍然需要一支非常有才能的工程师团队来解决重大问题来使用它。 拥有部署和管理正确基础架构的能力也非常重要。 如今,几乎没有公司拥有所有必要的资源。
最后,工程师喜欢在开源上工作,因为它有助于使他们在志趣相投的开发人员的更大社区中具有一定的知名度,同时还学习可以在将来的项目中使用的非专有技能。 这样的环境也使招聘优秀工程师变得更加容易。
雅虎! Hadoop社区和Hadoop社区都受益于合作,以了解对大规模分布式计算的需求,还受益于共享我们的专业知识和技术来创建每个人都可以使用和修改的解决方案。
SD :回到技术本身,随着Hadoop的发展,您在过去一年中了解了影响速度和可靠性的因素。 我注意到,对500个笔记的排序基准比一年前快20倍。 是否有一个魔术子弹或影响速度的物品汇总?
DC :Yahoo!正在为其Web级服务构建软件基础结构。 认识到越来越多的其他公司和组织可能需要类似的功能。 雅虎! 决定采用开源方法而不是开发专有解决方案,因此聘请我来领导它的工作,并开始支持该项目。 迄今为止,雅虎! 已贡献了该项目的大部分代码。
在过去的几年中,提速是我们工作的总汇,并且大部分都是通过反复试验来实现的。 我们使事情在给定大小的群集上平稳运行,然后将群集的大小加倍,然后看看有什么坏处。 我们的目标是随着群集大小的增加而线性扩展性能。 我们从该过程中学习,然后再次增加集群大小。 每次增加群集大小,可靠性都会面临更大的挑战,因为故障的数量和种类都会增加。
每次这样做,我们都在学习可以实现的目标,并为开源网格计算的常识做出贡献。 随着规模的扩大,出现了新的故障模式,罕见的问题变得普遍,必须加以解决,并且我们汲取的教训会影响下一次迭代。
SD :允许Hadoop在Amazon EC2上运行的映像在去年开始出现。 这使开发人员可以快速启动自己的微型集群。 是否还有其他工作可以简化集群,HDFS,MapReduce进程等的管理?
DC :雅虎! 有一个名为Hadoop on Demand(HOD)的项目,该项目从计算机池向用户动态分配MapReduce集群。 这正在被贡献给Hadoop开源项目。 Amazon EC2对于开始使用Hadoop的人们来说是理想的选择,因为操作大型集群非常复杂且消耗资源。
SD :您现在如何将Hadoop的功能与Google发布的信息的平等百分比进行比较? 到目前为止,是否已经解决了诸如过程定位到数据定位优化之类的功能?
DC :过去十年间,许多公司(包括Yahoo!)在内部和学术研究实验室中都开发了大型分布式计算软件。 近来,随着计算经济学变得越来越有利,并且在消费类产品中的应用越来越明显,人们的兴趣也有所增加。 与Google不同,Yahoo! 已经决定在开放的非专有环境中开发Hadoop,该软件可供任何人免费使用和修改。
Hadoop的目标远远超出了克隆任何现有对象的范围。 我们专注于构建每个人都将从中受益的可用系统。 我们已经实现了Google已发布的大多数优化,以及许多其他未提及的优化。 雅虎! 之所以在该项目中扮演领导角色,是因为其目标非常符合我们自己的需求,并且我们看到了与世界其他地方共享该技术的好处。
SD :最新的官方版本是0.13.1。 近期内有哪些主要特征? 1.0版需要完成哪些工作?
DC :0.14.0版本即将发布, 其中包含218个更改的列表 。
0.14.0中最大的更改是对文件系统的更改。 我们极大地改善了数据完整性。 对于用户而言,这几乎是无形的变化,但这意味着文件系统可以更早,更有效地检测到损坏。 这很关键,因为鉴于我们要处理的数据集和群集的大小,内存和磁盘损坏都很频繁。 我们还为文件增加了修改时间,为MapReduce添加了C ++ API,以及许多其他功能,错误修复和优化。
Hadoop 0.15.0仍在形成中, 到目前为止计划进行88项更改 。
这将为文件系统添加身份验证和授权,从而使共享集群的人们更难于共享彼此的文件。 我们还计划修订许多MapReduce API。
这是一个艰难的过程,因为它将要求用户更改其应用程序,因此我们希望第一时间正确。
我们目前希望0.15是1.0之前的最新版本。 一旦发布了1.0版本,我们将需要更加保守地进行不兼容的更改。 我们已经非常关注反向兼容性,但是对于1.0,它将变得更加重要。 计划是,针对所有后续的1.X版本,针对1.0编写的任何用户代码都必须继续运行而无需修改。 因此,我们需要确保我们拥有可以使用一段时间的API,或者至少可以轻松地向后兼容扩展的API。 在将它们锁定在1.0版本之前,我们将尝试将它们全部包含在0.15中并与它们一起使用一个版本。
道格的账号