日期:2014-05-16  浏览次数:20572 次

HBase的领导人探讨Hadoop、BigTable和分布式数据库

转自:http://duanple.blog.163.com/blog/static/7097176720100493555558/

Google最近关于Google Application Engin的介绍再一次引起了大家对备选数据库技术的兴趣。几星期前InfoQ访谈Hypertable项目的创始人之一Doug Judd,该项目受到了Google的BigTable数据库的启发。本周InfoQ很乐意给大家奉献对HBase领导人——im Kellerman、Michael Stack和Bryan Duxbury的专访。HBase是一个开源的、分布式的、仿效BigTable的面向列存储系统。

1. 对于第一次听说HBase的人,你准备怎么描述它?

HBase是一个开源的、分布式的、面向列的存储系统,该技术来源于Chang et al所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Googl文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop 项目的子项目。

HBase项目是为那些Oracle年许可费够得上一个小国家的国民生产总值(GNP)或由于其库表中有一些BLOB列且行数达到了数百万级因而导致MySQL濒临崩溃的用户提供的。任何拥有大量的结构化或半结构化数据、而且正受限于关系数据库管理系统(RDBMS)的用户都可以看看HBase。参与到该项目中就更好了。我们不是要达到自己卑微的目的——将大量版本表元、数十亿行乘数百万列的数据放置于“商业(commodity)”服务器集群之上——没有广大的用户、支持者和捐助者的支持,我们的项目是不长久的。

2. 为什么要启动该项目?

Jim和Stack工作的地方Powerset,需要一个类似Bigtable的数据存储系统来保存他们的Web表格 (webtable),一个存放Web文档及其以URL作为关键字的属性的宽泛的表。 当需要一个类似Bigtable的数据存储系统来存放大量的profile以及其他类型的数据时,Bryan的老板Rapleaf也加入到了这个项目中。

3. 它与Hypertable相比如何?

无疑,这两个项目的出发点都是解答同一问题的——开源的Bigtable。Hypertable是C++语言编写的,而HBase是用Java语言编写的。HBase参与开放开发的时间更长、提交者及外部捐助者的数量更多。

与Hypertable比较起来,选择Java使我们可以和Hadoop集成得更加紧密——当我们使用了HDFS,就不需要另启动一个进程担任Java和C++之间的代理了,也不需要跨过JNI“分水岭(great divide)”。而且,因为我们使用Java,我们就有了后援,因为相当一部分核心类型和功能已经由Hadoop核心项目的“Smart Folks”社区编写和测试过了。

Hypertable项目非常关注“性能”而且强烈感觉只有C++能解决这一问题。有趣的是,据我所知,Hadoop开发的大部分工作是由Yahoo的一个团队做的,他们过去由于与Hypertable所说一样的原因而使用C++,据说现在已经回到了Java MapReduce框架。很明显,Hadoop团队已经克服了这一问题;在Java存在性能问题的地方,他们采取了适当校正,而性能上并无大碍的部分,继续以前的方式。例如,Hadoop/HBase使用本地类库来进行压缩,因为Java在这方面性能非常差。