12.1 HBase简介

HBase是Apache Hadoop的数据库,能够对大数据提供随机、实时的读写访问功能,具有开源、分布式、可扩展及面向列存储的特点。HBase是由Chang等人基于Google的Bigtable[1]开发而成的。HBase的目标是存储并处理大型的数据,更具体来说是只需使用普通的硬件配置即可处理由成千上万的行和列所组成的大数据。

HBase是一个开源的、分布式的、多版本的、面向列的存储模型。它可以直接使用本地文件系统,也可以使用Hadoop的HDFS文件存储系统。不过,为了提高数据的可靠性和系统的健壮性,并且发挥HBase处理大数据的能力,使用HDFS作为文件存储系统才更为稳妥。

另外,HBase存储的是松散型数据。具体来说,HBase存储的数据介于映射(key/value)和关系型数据之间。HBase存储的数据可以理解为一种key和value的映射关系,但又不是简简单单的映射关系。除此之外它还具有许多其他的特性,我们将在本章后面详细讲述。HBase存储的数据从逻辑上来看就像一张很大的表,并且它的数据列可以根据需要动态地增加。除此之外,每个单元(cell,由行和列所确定的位置)中的数据又可以具有多个版本(通过时间戳来区别)。从图12-1所示可以看出,HBase还具有这样的特点:它向下提供了存储,向上提供了运算。另外,在HBase之上还可以使用Hadoop的MapReduce计算模型来并行处理大规模数据,这也是它具有强大性能的核心所在。它将数据存储与并行计算完美地结合在一起。

12.1 HBase简介 - 图1

图 12-1 HBase关系图

下面列举一下HBase所具有的特性:

线性及模块可扩展性;

严格一致性读写;

可配置的表自动分割策略;

RegionServer自动故障恢复;

便利地备份MapReduce作业的基类;

便于客户端访问的Java API;

为实时查询提供了块缓存和Bloom Filter;

可通过服务器端的过滤器进行查询下推预测;

提供了支持XML、Protobuf及二进制编码的Thrift网管和REST-ful网络服务;

可扩展的JIRB(jruby-based)shell;

支持通过Hadoop或JMX将度量标准倒出到文件或Ganglia中。

下面我们将具体介绍HBase的特性及其安装、配置、使用的方法。

[1]Google论文:Bigtable:A Distributed Storage System for Structured Data