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

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

HBase中的存储机制

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

  • 表是行的集合.

  • 行是列族的集合.

  • 列族是列的集合.

  • 列是键值对的集合.

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

Rowid列族列族列族列族
col1col2col3col1col2col3col1col2col3col1col2col3
1











2











3











面向列和面向行

面向列的数据库是将数据表存储为数据列的一部分而不是数据行的数据库.不久,它们将具有列族.

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

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

Table

HBase和RDBMS

HBaseRDBMS
HBase是无模式的,它没有固定列模式的概念;只定义列族.RDBMS由其模式控制,该模式描述了表的整个结构.
它是为宽表而构建的. HBase是可水平扩展的.它很薄,适用于小型表.难以扩展.
HBase中没有任何交易.RDBMS是transactional.
它已经对数据进行了非标准化.它将被标准化数据.
这适用于半结构化和结构化数据.这对结构化数据有好处.

HBase的特征

  • HBase可线性扩展.

  • 它具有自动故障支持.

  • 它提供一致的读取和写道.

  • 它与Hadoop集成,既作为源也是目的地.

  • 它为客户提供了简单的Java API.

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

何处使用HBase

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

  • 它在cl之上托管非常大的表商品硬件用户.

  • 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顶级项目.