目录
[HBase 简介](#HBase 简介)
[HBase 定义](#HBase 定义)
[HBase 数据模型](#HBase 数据模型)
[HBase 逻辑结构](#HBase 逻辑结构)
[HBase 物理存储结构](#HBase 物理存储结构)
[HBase 基本架构](#HBase 基本架构)
HBase 简介
HBase 定义
Apache HBase™ 是一种分布式、可扩展的 NoSQL 数据库,它基于 HDFS 进行数据存储。
HBase 数据模型
HBase 的设计理念源自 Google 的 BigTable 论文,采用类似的数据模型。
-
BigTable 数据模型简介:
- Bigtable 是一个稀疏的、分布式的、持久的多维排序 map。
- 映射由行键、列键和时间戳索引;映射中的每个值都是一个未解释的字节数组。
-
HBase 数据模型:
- HBase 使用与 Bigtable 非常相似的数据模型。用户将数据行存储在带标签的表中。
- 数据行具有可排序的键和任意数量的列。
- 表存储稀疏,因此同一表中的行可以具有变化很大的列。
-
关键特性:
- 稀疏、分布式、多维、排序的映射。
- 映射指代非关系型数据库的 key-value 结构。
HBase 逻辑结构
HBase 可以用于存储多种结构的数据,以下是以 JSON 格式表示的一个例子:
{
"row_key1":{
"personal_info":{
"name":"zhangsan",
"city":"北京",
"phone":"131********"
},
"office_info":{
"tel":"010-1111111",
"address":"lzl"
}
},
"row_key11":{
"personal_info":{
"city":"上海",
"phone":"132********"
},
"office_info":{
"tel":"010-1111111"
}
},
"row_key2":{
...
}
}
逻辑结构示例:
personal_info | office_info | ||
---|---|---|---|
Row Key | name | city | phone |
row_key1 | 张三 | 北京 | 131***** |
row_key11 | 上海 | 132***** | |
row_key2 | 王五 | 广州 | |
row_key3 | 深圳 | 187***** | |
... |
- 存储数据稀疏,数据存储多维。
- 不同行具有不同的列。
- 数据存储整体有序,按照 RowKey 的字典序排列。
HBase 物理存储结构
物理存储结构:
Row Key | Column Family | Column Qualifier | Timestamp | Type | Value |
---|---|---|---|---|---|
row_key1 | personal_info | name | t1 | Put | 张三 |
row_key1 | personal_info | city | t2 | Put | 北京 |
row_key1 | personal_info | phone | t3 | Put | 131***** |
row_key1 | personal_info | phone | t4 | Put | 177***** |
- Timestamp: 不同版本(version)的数据根据 timestamp 进行区分,读取数据默认读取最新版本。
- StoreFile: 物理文件。
- Type: 对于删除操作,其类型为 DeleteColumn。
数据模型
- Name Space: 类似于关系型数据库的 database 概念,每个命名空间下有多个表。
- Table: 类似于关系型数据库的表概念,定义表时只需要声明列族即可。
- Row : HBase 表中的每行数据都由一个 RowKey 和多个 Column 组成。
- Column: 每个列都由 Column Family(列族)和 Column Qualifier(列限定符)限定。
- Time Stamp: 用于标识数据的不同版本。
- Cell: 由{rowkey, column Family:column Qualifier, timestamp} 唯一确定的单元。
HBase 基本架构
- Master: 主要进程,负责监控 RegionServer 状态,管理元数据变化。
- RegionServer: 负责数据 cell 的处理。
- Region: 表被分割成多个 Region,由 RegionServer 管理。
- Zookeeper: 用于 Master 的高可用、记录 RegionServer 的部署信息等。
- HDFS: 提供底层数据存储服务和支持。
架构角色:
- Master: 实现类为 HMaster,负责监控集群中的所有 RegionServer 实例。
- Region Server: 实现类为 HRegionServer,负责数据 cell 的处理。
- Zookeeper: HBase 通过 Zookeeper 来做 Master 的高可用、记录 RegionServer 的部署信息。
- HDFS: 为 Hbase 提供最终的底层数据存储服务。