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流程

HBase和HDFS

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

HBase中的存储机制

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

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

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

ROWID 列家族 列家族 列家族 列家族
COL1 COL2 COL3 COL1 COL2 COL3 COL1 COL2 COL3 COL1 COL2 COL3
1
2
3

面向列和行向导

面向列的数据库是将数据表存储为数据列的部分而不是数据行的数据库。不久,他们将有专栏家庭。

面向行的数据库 面向列的数据库
它适用于联机事务处理(OLTP)。 它适用于在线分析处理(OLAP)。
这种数据库是为少量的行和列设计的。 面向列的数据库是为巨大的表而设计的。

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

表

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和Adobe等公司在内部使用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的顶级项目。