InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Hypertable项目领导者谈Hadoop和分布式数据库

作者 Scott Delap 译者 郭晓刚 发布于 2008年5月4日

领域
架构 & 设计,
运维 & 基础架构,
语言 & 开发
主题
云计算 ,
集群与缓存 ,
Java ,
数据访问 ,
架构
标签
弹性计算集群 ,
Hadoop

数据库领域近来吸引了不少眼球。IBM不久前投资EnerpriseDB;EnerpriseDB有一个运行在Amazon EC2上的云版本。Amazon去年末发布了他们自己的云数据库。而Google的BigTable尽管并不开源,也得到了社区的广泛研究。同样是在这个领域,两个开源项目——HBaseHypertable利用开源Map/Reduce平台Hadoop提供了类似于BigTable的可伸缩数据库实现。InfoQ与Zvents, Inc的理论研究架构师以及Hypertable项目的创立者Doug Judd一起讨论其实现。

1、你如何向第一次听说Hypertable的人形容这个数据库?

Hypertable是一个开源、高性能、可伸缩的数据库,它采用与Google的Bigtable相似的模型。在过去数年中,Google为在PC集群上运行的可伸缩计算基础设施设计建造了三个关键部分。第一个关键的基础设施是Google File System(GFS),这是一个高可用的文件系统,提供了一个全局的命名空间。它通过跨机器(和跨机架)的文件数据复制来达到高可用性,并因此免受传统文件存储系统无法避免的许多失败的影响,比如电源、内存和网络端口等失败。第二个基础设施是名为Map-Reduce的计算框架,它与GFS紧密协作,帮助处理收集到的海量数据。第三个基础设施是Bigtable,它是传统数据库的替代。Bigtable让你可以通过一些主键来组织海量数据,并实现高效的查询。Hypertable是Bigtable的一个开源实现,并且根据我们的想法进行了一些改进。

如果你运行一个高流量的网站,那么就应该关心可伸缩的计算基础设施。网站服务器的日志包含了与用户行为相关的有价值的信息。你可以分析这些日志数据,并根据分析的结果提供更好的服务。它让你可以回答这样一些问题:“如果客户购买产品X,他们还可能购买什么?”,“如果用户到达页面Y,那么在他们关闭会话之前平均会进行多少次点击?”

2、为什么Hypertable团队要开始这样一个项目?

Zvents的工程团队启动这个项目是因为我们认识到数据以及数据驱动工程的价值。我们认识到在高伸缩的条件下,传统的存储和信息处理工具力不从心。在我们启动项目的时候,还不存在Bigtable的开源实现,于是我们决定自己来建造那么一个数据库。我们选择开源的理由是我们觉得注定会出现一个Bigtable的开源实现。通过领导这方面的开发工作,我们可以在知识、专业技能和可靠性等方面促进竞争。

3、为什么Hypertable需要Hadoop才能运行?

不,Hypertable并不一定要Hadoop才能运行。Hypertable被设计成可以运行在现有的文件系统之上,比如Hadoop和HDFS。面向底层文件系统的接口已经通过一种代理(broker)机制进行了抽象。Hypertable通过标准的协议与一个DFS代理交谈,从而实现与底层文件系统的通信。我们使用的主要DSF代理是针对HDFS的代理,但我们也有针对KFS(Kosmos File System)的代理。还有一个“本地代理(local brocker)”只读写本地挂接的文件系统。“本地代理”是我们用来测试的,但同样可以用来在任何可通过FUSE挂接的分布式文件系统上运行Hypertable。至于Hadoop的其余部分,我们打算写一个InputFormat类,让Hypertable中的表可被用作map-reduce任务的输入。

4、Hypertable相比HBase有何差异?为什么不直接贡献到HBase而要另起炉灶呢?

Hypertable与HBase的差别是,Hypertable是Bigtable的一个更高性能的实现(InfoQ同样采访了HBase的团队)。我开始的时候跟Jim Kellerman以及Hadoop团队的一些成员一起为HBase工作。但我们对HBase应该变成什么样子有不同意见,对实现语言的选择也有不同意见。他们坚持用Java,而我力推C++。于是我就分出来,开始了Hypertable项目。下面的文档名为《为何选择C++而不选择Java》,里面解释了选用C++的技术原因。

http://code.google.com/p/hypertable/wiki/WhyWeChoseCppOverJava

虽然我们很早就与HBase项目分开,但两个团队仍然是很好的朋友。实际上我们上星期就一起出去吃午饭,同时还分享了很多实现中的情况和想法。

5、按照我对Hadoop的粗浅理解,M/R范型很适合用来完成数据的批处理。那么Hadoop用在比较突出事务/单次请求的范型中又如何呢?

Map-Reduce绝对是一个离线批处理系统。它很适合离线执行海量信息(如日志)的排序及筛选。这种大规模的离线计算经常会产生大量的信息供服务参考,以提供更好的用户体验。信息可能包括对每个用户的描述数据,又或者对每次请求的统计信息。这就是Hypertable发挥作用的地方,它提供了一种可伸缩的解决方案来存储经过主键索引的数据,并且可以在线查询。

6、你在使用Hadoop的过程中觉得哪一方面是最好的?

简而言之Hadoop运作得很好。我们在Zvents已经成功应用了Hadoop,还有很多公司在离线作业中使用Hadoop。Hadoop团队也在下面的新闻稿中描述了他们的成就:

http://developer.yahoo.com/blogs/hadoop/2008/02/yahoo-worlds-largest-production-hadoop.html

7、最坏的方面呢?

我觉得Hadoop最坏的方面是这个项目已经存在了几年都还没有一个稳定的1.0版。有时候很难找到一个稳定的版本。不过最近Hadoop项目已经稳定了很多。Hadoop还有一个问题,在它的分布式文件系统中缺乏对“sync”操作的支持,因此不适合用来保存提交日志。他们已经在积极解决这个问题,在我们发布Hypertable 1.0版的时候应该就会实现了。

8、1.0版预计在什么时候发布?

我们会在一两个月之内发布一个Beta版,紧接着就是1.0版。如果想随时了解Beta版和1.0版的情况,请加入Hypertable的公告邮件列表:http://groups.google.com/group/hypertable-announce

9、有什么公司在用Hypertable?

因为Hypertable还处在alpha阶段,所以还没有公司用Hypertable来构建服务。不过很多人都对Hypertable感兴趣,我们已经有超过3000次下载。很多人也通过邮件列表给了我们很好的建议。比如Omaha, Nebraska一家企业有个人向我们报告了一个回归错误。经过邮件列表上的一番往来,他干脆把机器放到公司防火墙的外面,然后给了我一个VNC帐号去调试这个问题。我最后终于找到了问题,程序在PST之外的时区运行时会发生时间戳的转换错误。还有一个来自纽约的Stony Brook大学的博士生,他用Hypertable重新完成了Google的Bigtable基准测试,而且得到了很好的结果。像这样的社区回馈给了项目极大的帮助。上周我们给Facebook的30来位工程师做了Hypertable的演讲。他们感觉确实需要在后端工具链中加入这种类型的基础设施,并决定在Hypertable接近完成的时候试用一两个月。我们很期待看到Hypertable发布1.0版的时候能出现一些真正的应用。

10、Hypertable有何未来目标?

短期来说,我们把精力放在高可用性上,尤其是服务器恢复。完成之后经过测试,项目就会进入到Beta阶段,紧接着就是1.0版。我们希望Hypertable能在很多Web Service应用中取代MySQL。我们希望把LAMP这个缩写变成LAHP,显然H指的是Hypertable。这需要坚如磐石的可靠性和持续不断的性能提升才能达到。这个目标应该能让团队忙好一阵子了。

查看英文原文:Hypertable Lead Discusses Hadoop and Distributed Databases

译者 郭晓刚 是InfoQ中文站架构社区编辑,创建并终结过数家软件小企业,翻译过多本技术书籍。

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。