转自: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在这方面性能非常差。
围绕性能问题HBase确实需要做大量工作——上面提到的核心类型及RPC传输都需要彻底改造以更适合HBase使用模式 ——但是现在我们把精力放在别处。我们将追随Hadoop项目所采取的路线,首先把精力集中在健壮性、扩展性、正确性以及社区建立上。之后,我们再提高速 度。当时机成熟时,我们将会在速度方面把HBase和Hypertable进行全方位比较。
和体育比赛不同, Hypertable的伙计们是我们的同伴。我们在公平规则基础上进行对话并互相帮助。
4. 对于Google App Engine公布BigTable,你们怎么想?
看到Google在这方面步亚马逊之后尘很有意思,由其是Google的系统是Hadoop和Amazon正在从事的所有概念的“参考”实现。然而,正如App Engine宣布以来许多人已经注意到的,拥有自己的基础架构与租用它这两种方式有很大的不同。在规模很小的时候,这可能是非常好的一件事情,但是一旦达到了下限阈值,你最好自己来搭建一个基础架构。
但是禁闭(lock-in)问题又来了:一旦你的应用变得流行起来,当你试图将你的应用从App Engine上迁移出来的时候,即便拥有自己的硬件颇具经济意义,你也无法拥有平台(你的系统构建于其上)的所有软件。从很多方面来讲,这看起来是LAMP优点的退步。
这就是说,就算出现了不利于HBase以及用于解析GQL等等一个Google App Engine DataStore API的实现,我们也不能对这一产品说不。
5. M/R范式对于批处理数据应用得很好。在更多的基于事务/单一请求的范式下,Hadoop应用得如何?
MapReduce(不论是Google的还是Hadoop的)是用于处理不适合传统数据库的海量数据的理想技术。但它又不适合事务/单一请求处理。而HBase使用了来自Hadoop核心的HDFS,在其常用操作中并没有使用MapReduce。
但是,HBase支持高效随机存取,因此它可以被用于你的业务的一些事务性元素。你获取一行的性能可能会低于其他方式(比如说MySQL),但是当你的事务吞吐量增加时你得到了很好的伸缩性。但是你也可以吃到自己的蛋糕,因为HBase获得了来自IBM研究院院一群人的一些非常好的捐赠,可以很容易将HBase作为MapReduce的源及目的来使用,因此,你基于数据的HBase也可以分享MapReduce的批处理操作。
6. 使用Hadoop,你们所发现的最好的东西是什么?
作为Hadoop的一个子项目,就像是装上了双引擎。最大的推动力是我们可以借用Hadoop的核心开发者。而且,作为 Hadoop社区的一部分,已经把用户吸引到了HBase上来了。我们利用了Hadoop中已经完成的大量工作——HBase的许多代码是重用 Hadoop的代码。我们也被公布于Hadoop社区,从中获取反馈,这对我们来说是好处是巨大的。
第二个推动力是,我们是Apache的一部分。Apache界有许多已经开发好的程序和基础架构,我们可以直接使用而无需自己开发。
7. 最坏的东西又是什么?
我们只往好处看(笑)。如果非要说点什么……
在许多方面,Hadoop的HDFS和MapReduce开发完全是一回事,因此有时很难让核心开发者理解我们使用HDFS的区别;比如,MapReduce通常不能随即读取,而HBase必须能够做到这一点。
而且在HDFS中缺少append操作(参见HADOOP-1700)。没有这个操作,HBase可能会在服务器崩溃时丢失数据。看起来我们很可能在Hadoop 0.18.0中获得这一特性。
8. 哪些公司正在使用HBase?
Powerset和Rapleaf首当其冲。我们所知的积极使用HBase承载大量数据集的公司包括WorldLingo和Wikia,许多其他的公司正初步涉足HBase。如果还有其他公司对使用HBase感兴趣,就告诉我们吧!
9. HBase未来是如何规划的?
在不久的将来,我们将稳定我们的0.1分支。大约在下周,我们将发布0.1.2。我们知道稳定的供应是发展用户基础和捐助者的关键方法。另外,在5月份我们的下一个重大发布——0.2中,你将看到对健壮性、大量更好的集群自管理特性如区域再平衡、及客户端API方面有很大的改进。
查看英文原文:HBase Leads Discuss Hadoop, BigTable and Distributed Databases
分享到:
相关推荐
在深入分析Hadoop云计算框架中的分布式数据库HBase研究之前,我们先了解一下Hadoop的背景和其核心组件。Hadoop是一个开源框架,它允许使用简单的编程模型在计算机集群上进行海量数据的存储和处理。由于其用Java语言...
本文将深入探讨两个重要的分布式数据库系统:Hypertable和HBase,它们都是受到Google核心技术启发的开源实现。 首先,Hypertable是一个类似于Google Bigtable的分布式数据库系统,基于Google的GFS(Google File ...
HBase是一款基于Google Bigtable理念设计的开源NoSQL数据库,它构建在Hadoop之上,适用于处理大规模数据。在本文档中,我们将详细介绍如何在Linux环境中安装、配置和实践HBase。 1. **HBase安装** - **解压安装包...
HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储...
HBase 是一个分布式的、面向列的开源数据库,源于 Google 的一篇论文《BigTable:一个结构化数据的分布式存储系统》。HBase 以表的形式存储数据,表有行和列组成,列划分为若干个列族/列簇(column family)。HBase ...
于是,分布式数据库逐渐兴起,如Google的Bigtable、Amazon的DynamoDB以及开源的Hadoop HBase等。近年来,随着微服务架构的普及,分布式数据库得到了更广泛的应用,如Apache Cassandra、MongoDB等,它们提供了高性能...
通过使用HBase存储数据,Hive作为数据仓库工具用于查询和分析数据,研究了一种基于Hadoop的分布式数据库系统模型。 Hadoop框架使用了HDFS(Hadoop Distributed File System)作为其文件系统,能够存储大量数据,并...
HBase是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。作为一个高可靠、高性能、面向列、可伸缩的分布式数据库,HBase的设计目标是处理非常庞大的表,通过水平扩展的方式,利用廉价计算机集群...
HBase,全称为Hadoop Database,是一款基于Google Bigtable理念设计的开源非关系型分布式数据库(NoSQL)。作为Apache Hadoop生态系统的一员,它为大数据处理提供了高效、可扩展的数据存储解决方案。本文将详细阐述...
HBase是一个分布式、面向列的开源数据库,它运行在Hadoop的文件系统(HDFS)之上,利用Hadoop的MapReduce来处理HBase中的大数据,同时也使用Apache ZooKeeper作为分布式协同服务。HBase特别适合于需要快速读写访问...
本文档主要讲述的是分布式数据库HBase;HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google ...
HBase,全称为Apache HBase,是构建在Hadoop文件系统(HDFS)之上的开源、非关系型、分布式数据库。它属于NoSQL数据库的一种,特别适合于处理海量数据,尤其适用于实时读写操作。HBase v1.7.2作为该系统的最新稳定...
HBase,全称为Hadoop Distributed File System Base,是一个基于Google BigTable设计理念的开源分布式列式数据库。它设计的目标是处理超大规模的数据,支持PB级别的数据量,并可在数千台服务器组成的集群上运行。...
3. Apache HBase:基于Hadoop的分布式列族数据库。 4. TiDB:开源的新一代分布式HTAP(混合事务/分析处理)数据库。 通过学习这份“分布式数据库课件资料宝典”,你可以深入了解分布式数据库的设计原理、实现机制...
这是一个基于Java技术栈,利用SpringMVC、Spring、HBase和Maven构建的Hadoop分布式云盘系统的项目。该项目旨在实现一个高效的、可扩展的云存储解决方案,利用Hadoop的分布式特性来处理大规模数据存储需求。 首先,...
HBase是一个基于Google的Bigtable设计的开源NoSQL数据库,它运行在Hadoop之上,提供高度可扩展的、高性能的、随机访问的、列族式的分布式存储系统。HBase适合处理大规模的数据集,尤其是在需要实时读写操作的场景下...
HBase是一款基于Google Bigtable设计思想的开源分布式数据库,属于Apache Hadoop项目的一部分。它是一个非关系型的、高性能、分布式的列式存储系统,适用于大规模数据集(跨TB乃至PB)的随机读写。在互联网行业中,...
HBase,全称为Hadoop Database,是一种基于Google的BigTable设计理念开发的开源分布式列式数据库,特别适合处理和存储海量半结构化和非结构化数据。它诞生于大数据时代,旨在弥补Hadoop生态系统中对于实时数据处理的...
HBase是基于Google的Bigtable设计的一款开源、分布式的、版本化的非关系型数据库(NoSQL数据库),它运行在Hadoop之上,主要用于处理海量结构化数据。HBase提供高吞吐量的数据读写能力,尤其适合于大规模、稀疏的...