Hbase 简明教程
HBase - Overview
自 1970 年以来,RDBMS 一直是与数据存储和维护相关问题的一个解决方案。随着大数据时代的到来,公司意识到处理大数据的优势并开始选择 Hadoop 等解决方案。
Hadoop 使用分布式文件系统存储大数据,并使用 MapReduce 处理大数据。Hadoop 擅长存储和处理任意、半结构化甚至非结构化等各种格式的巨量数据。
Limitations of Hadoop
Hadoop 只可以执行批处理,并且只能顺序访问数据。这意味着即使是最简单的作业也必须搜索整个数据集。
处理后的巨型数据集会产生另一个巨型数据集,并且也应该按顺序进行处理。此时,需要一个新的解决方案,以便在单个时间单位(随机访问)内访问数据的任何点。
What is HBase?
HBase 是构建在 Hadoop 文件系统之上的分布式面向列数据库。它是一个开源项目,且可水平扩展。
HBase 是一种数据模型,它类似于 Google 的大型表格,旨在为大量结构化数据提供快速随机访问。它利用了 Hadoop 文件系统 (HDFS) 提供的容错功能。
它是 Hadoop 生态系统的一部分,它提供了对 Hadoop 文件系统中数据的随机实时读/写访问。
人们可以通过 HDFS 直接或通过 HBase 将数据存储在 HDFS 中。数据使用者使用 HBase 以随机方式读取/访问 HDFS 中的数据。HBase 位于 Hadoop 文件系统之上,并提供读写访问。
HBase and HDFS
HDFS |
HBase |
HDFS 是一个分布式文件系统,适用于存储大文件。 |
HBase 是构建在 HDFS 之上的一个数据库。 |
HDFS 不支持快速查找各条记录。 |
HBase 能够对更大的表进行快速查找。 |
它提供了高延迟批处理;没有批处理的概念。 |
它提供了对数十亿条记录的单行低延迟访问(随机访问)。 |
它只能提供对数据的顺序访问。 |
HBase 在内部使用哈希表并提供随机访问,并将其数据存储在已编制索引的 HDFS 文件中以进行快速查找。 |
Storage Mechanism in HBase
HBase 是一个 column-oriented database ,其中的表按行排序。表模式仅定义列族,即键值对。一个表可以有许多列族,并且每个列族可以有任意数量的列。后续列值将连续存储在磁盘上。表的每个单元格值都带有一个时间戳。简而言之,在 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 |
||||
Column Oriented and Row Oriented
面向列的数据库是将数据表存储为数据列段(而不是数据行)的数据库。简而言之,它们将具有列族。
Row-Oriented Database |
Column-Oriented Database |
它适合在线事务处理 (OLTP)。 |
它适合在线分析处理 (OLAP)。 |
此类数据库是针对少量行和列设计的。 |
面向列的数据库是针对大表设计的。 |
下图显示了面向列的数据库中的列族:
HBase and RDBMS
HBase |
RDBMS |
HBase 是无模式的,它没有固定列模式的概念;仅定义列族。 |
RDBMS 由其模式管理,模式描述了表的所有结构。 |
它专为宽表而构建。HBase 可水平扩展。 |
它很薄,专为小表而构建。难以扩展。 |
HBase 中没有事务。 |
RDBMS is transactional. |
It has de-normalized data. |
它将具有标准化数据。 |
它适用于半结构化数据以及结构化数据。 |
它适用于结构化数据。 |
Features of HBase
-
HBase is linearly scalable.
-
它具有自动故障支持。
-
它提供了一致的读和写操作。
-
它作为源和目标与 Hadoop 集成。
-
它具有用于客户端的简单 Java API。
-
它提供跨集群的数据复制。
Where to Use HBase
-
Apache HBase 用于随机、实时地读/写访问大数据。
-
它在商品硬件集群之上托管极大的表。
-
Apache HBase 是非关系型数据库,其模型参考了 Google 的 Bigtable。Bigtable 在 Google 文件系统上执行操作,同样 Apache HBase 也在 Hadoop 和 HDFS 之上工作。
Applications of HBase
-
在需要编写重量级应用程序时,它会被使用。
-
每当我们需要为可用数据提供快速随机访问时,HBase 就会被使用。
-
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 顶级项目。 |