HBase - 概述

自 1970 年以来,RDBMS 一直是数据存储和维护相关问题的解决方案。大数据出现后,各公司意识到处理大数据的好处,并开始选择 Hadoop 等解决方案。

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

Hadoop 的局限性

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

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

Hadoop 随机访问数据库

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

什么是 HBase?

HBase 是一个基于 Hadoop 文件系统构建的分布式列式数据库。它是一个开源项目,可水平扩展。

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

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

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

HBase Flow

HBase 和 HDFS

HDFS HBase
HDFS 是一种适合存储大文件的分布式文件系统。 HBase 是建立在 HDFS 之上的数据库。
HDFS 不支持快速的单个记录查找。 HBase 为较大的表提供快速查找。
它提供高延迟批处理;没有批处理的概念。 它提供对数十亿条记录中单行的低延迟访问(随机访问)。
它仅提供数据的顺序访问。 HBase 内部使用哈希表并提供随机访问,并将数据存储在索引的 HDFS 文件中以便更快地进行查找。

HBase 中的存储机制

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

  • 表是行的集合。
  • 行是列族的集合。
  • 列族是列的集合。
  • 列是键值对的集合。

下面给出了 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

列式和行式

列式数据库是将数据表存储为数据列的部分,而不是数据行的数据库。不久,它们将拥有列族。

面向行的数据库 面向列的数据库
适用于在线事务处理 (OLTP)。 适用于在线分析处理 (OLAP)。
此类数据库专为少量行和列而设计。 面向列的数据库专为大型表而设计。

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

Table

HBase 和 RDBMS

HBase RDBMS
HBase 是无模式的,它没有固定列模式的概念;只定义列族。 RDBMS 由其模式控制,该模式描述了表的整个结构。
它是为宽表构建的。HBase 可水平扩展。 它很薄,专为小表构建。难以扩展。
HBase 中没有事务。 RDBMS 是事务性的。
它具有非规范化数据。 它将具有规范化数据。
它适用于半结构化和结构化数据。 它适用于结构化数据。

HBase 的功能

  • HBase 是线性可扩展的。
  • 它具有自动故障支持。
  • 它提供一致的读取和写入。
  • 它与 Hadoop 集成,既可以作为源,也可以作为目标。
  • 它具有简单的 Java API客户端。
  • 它提供跨集群的数据复制。

在哪里使用 HBase

  • Apache HBase 用于对大数据进行随机、实时的读/写访问。

  • 它在商用硬件集群之上托管非常大的表。

  • Apache HBase 是一个仿照 Google 的 Bigtable 建模的非关系数据库。 Bigtable 在 Google 文件系统上运行,同样,Apache HBase 在 Hadoop 和 HDFS 上运行。

HBase 的应用

  • 每当需要编写大型应用程序时,都会使用它。
  • 每当我们需要提供对可用数据的快速随机访问时,就会使用 HBase。
  • Facebook、Twitter、Yahoo 和 Adob​​e 等公司都在内部使用 HBase。

HBase 历史

年份 事件
2006 年 11 月 Google 发布了关于 BigTable 的论文。
2007 年 2 月 最初的 HBase 原型是作为 Hadoop 贡献而创建的。
2007 年 10 月 第一个可用的 HBase 和 Hadoop 0.15.0 一起发布。
2008 年 1 月 HBase 成为Hadoop。
2008 年 10 月 HBase 0.18.1 发布。
2009 年 1 月 HBase 0.19.0 发布。
2009 年 9 月 HBase 0.20.0 发布。
2010 年 5 月 HBase 成为 Apache 顶级项目。