Hbase 简明教程

HBase - Overview

自 1970 年以来,RDBMS 一直是与数据存储和维护相关问题的一个解决方案。随着大数据时代的到来,公司意识到处理大数据的优势并开始选择 Hadoop 等解决方案。

Hadoop 使用分布式文件系统存储大数据,并使用 MapReduce 处理大数据。Hadoop 擅长存储和处理任意、半结构化甚至非结构化等各种格式的巨量数据。

Limitations of Hadoop

Hadoop 只可以执行批处理,并且只能顺序访问数据。这意味着即使是最简单的作业也必须搜索整个数据集。

处理后的巨型数据集会产生另一个巨型数据集,并且也应该按顺序进行处理。此时,需要一个新的解决方案,以便在单个时间单位(随机访问)内访问数据的任何点。

Hadoop Random Access Databases

HBase、Cassandra、couchDB、Dynamo 和 MongoDB 等应用程序是存储大量数据并以随机方式访问数据的数据库。

What is HBase?

HBase 是构建在 Hadoop 文件系统之上的分布式面向列数据库。它是一个开源项目,且可水平扩展。

HBase 是一种数据模型,它类似于 Google 的大型表格,旨在为大量结构化数据提供快速随机访问。它利用了 Hadoop 文件系统 (HDFS) 提供的容错功能。

它是 Hadoop 生态系统的一部分,它提供了对 Hadoop 文件系统中数据的随机实时读/写访问。

人们可以通过 HDFS 直接或通过 HBase 将数据存储在 HDFS 中。数据使用者使用 HBase 以随机方式读取/访问 HDFS 中的数据。HBase 位于 Hadoop 文件系统之上,并提供读写访问。

hbase flow

HBase and HDFS

HDFS

HBase

HDFS 是一个分布式文件系统,适用于存储大文件。

HBase 是构建在 HDFS 之上的一个数据库。

HDFS 不支持快速查找各条记录。

HBase 能够对更大的表进行快速查找。

它提供了高延迟批处理;没有批处理的概念。

它提供了对数十亿条记录的单行低延迟访问(随机访问)。

它只能提供对数据的顺序访问。

HBase 在内部使用哈希表并提供随机访问,并将其数据存储在已编制索引的 HDFS 文件中以进行快速查找。

Storage Mechanism in HBase

HBase 是一个 column-oriented database ,其中的表按行排序。表模式仅定义列族,即键值对。一个表可以有许多列族,并且每个列族可以有任意数量的列。后续列值将连续存储在磁盘上。表的每个单元格值都带有一个时间戳。简而言之,在 HBase 中:

  1. 表是行的集合。

  2. 行是列族的集合。

  3. 列族是列的集合。

  4. 列是键值对的集合。

下面给出了 HBase 中表的示例模式。

Rowid

Column Family

Column Family

Column Family

Column Family

col1

col2

col3

col1

col2

col3

col1

col2

col3

col1

col2

col3

1

2

3

Column Oriented and Row Oriented

面向列的数据库是将数据表存储为数据列段(而不是数据行)的数据库。简而言之,它们将具有列族。

Row-Oriented Database

Column-Oriented Database

它适合在线事务处理 (OLTP)。

它适合在线分析处理 (OLAP)。

此类数据库是针对少量行和列设计的。

面向列的数据库是针对大表设计的。

下图显示了面向列的数据库中的列族:

table

HBase and RDBMS

HBase

RDBMS

HBase 是无模式的,它没有固定列模式的概念;仅定义列族。

RDBMS 由其模式管理,模式描述了表的所有结构。

它专为宽表而构建。HBase 可水平扩展。

它很薄,专为小表而构建。难以扩展。

HBase 中没有事务。

RDBMS is transactional.

It has de-normalized data.

它将具有标准化数据。

它适用于半结构化数据以及结构化数据。

它适用于结构化数据。

Features of HBase

  1. HBase is linearly scalable.

  2. 它具有自动故障支持。

  3. 它提供了一致的读和写操作。

  4. 它作为源和目标与 Hadoop 集成。

  5. 它具有用于客户端的简单 Java API。

  6. 它提供跨集群的数据复制。

Where to Use HBase

  1. Apache HBase 用于随机、实时地读/写访问大数据。

  2. 它在商品硬件集群之上托管极大的表。

  3. Apache HBase 是非关系型数据库,其模型参考了 Google 的 Bigtable。Bigtable 在 Google 文件系统上执行操作,同样 Apache HBase 也在 Hadoop 和 HDFS 之上工作。

Applications of HBase

  1. 在需要编写重量级应用程序时,它会被使用。

  2. 每当我们需要为可用数据提供快速随机访问时,HBase 就会被使用。

  3. Facebook、Twitter、Yahoo 和 Adobe 等公司在内部使用 HBase。

HBase History

Year

Event

Nov 2006

Google 发表了关于 BigTable 的论文。

Feb 2007

初始 HBase 原型创建为 Hadoop 贡献。

Oct 2007

第一个可用的 HBase 与 Hadoop 0.15.0 同时发布。

Jan 2008

HBase 成为 Hadoop 子项目。

Oct 2008

HBase 0.18.1 was released.

Jan 2009

HBase 0.19.0 was released.

Sept 2009

HBase 0.20.0 was released.

May 2010

HBase 成为 Apache 顶级项目。