1. HBase 介绍
1.1 HBase 是什么
HBase 全称为 Hadoop Database,即 Hadoop 数据库,是一个高可靠、高性能、面向列族、可伸缩的分布式的存储系统。HBase 使用 HDFS 作为其文件存储系统,可以使用 Hadoop 的 MapReduce、Spark 及 Flink 来处理 HBase 中的海量数据,利用 ZooKeeper 作为其协调工具。可在廉价 PC Server 上搭建起大规模结构化存储集群。
1.2 HBase 的优势与劣势
传统数据库相比,HBase 的架构优势:
完全分布式(数据分片、故障自恢复、无限扩展)
数据存储在 HDFS 上,使得存储与计算分离
数据冗余
对机器要求不高
记录稀疏,对于特定的数据能够有效减少不必要数据的存储
HBase 的架构劣势:
单一 RowKey 固有的局限性决定了它不可能有效支持多条件查询
不支持直接 SQL 查询
2. HBase 数据模型
在 HBase 中,数据存储在有行列的表中。这就和关系型数据的属性有些重合。但是概念上有些不一样, HBase 将表视为多维映射(Map)。
HBase 数据模型概念:
HBase 数据模型概念上分为表、行、列、列族、列限定符、单元格、时间戳。
HBase 表由许多行组成,每行是由行键及一个或者多个列族组成;
列族是由许多列和对应的值组成,列在 HBase 中由列族和列限定符组成,使用 : 分隔;
单元格是将行、列族、列限定符、包含的值及时间戳的组合,代表这数据的版本;
每个值都会有一个时间戳,代表着这个数据的版本。
2.1 概念上的视图
下面是根据 BigTable 论文第二页稍加修改的例子。
有一个名为 internetInfo 的表,包含两行 ( com.apple.www and com.microsoft.www ) 以及三个列族:contents,anchor,peoples。在这个例子里面,第一行 com.apple.www,anchor 有两个列(anchor:css.com、anchor:look.ca),contents 仅有一列(contents:html)。
这个例子中行键为 com.apple.www 的包含 5 个版本的数据&#