文章目录
- 1. HBase定义
- 2. HBase数据模型
- 2.1 逻辑存储结构
- 2.2 HBase 物理存储结构
- 3. HBase基础架构
1. HBase定义
HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。----是一个分布式存储系统
2. HBase数据模型
2.1 逻辑存储结构
HBase 数据模型的关键在于稀疏、分布式、多维、排序的映射。其中映射 map指代非关系型数据库的 key-Value 结构。
HBase 可以用于存储多种结构的数据,以 JSON 为例,存储的数据原貌为:
"row_key1":{
"personal_info":{
"name":"zhangsan",
"city":"北京",
"phone":"131********"
},
"office_info":{
"tel":"010-1111111",
"address":"atguigu"
}
}
2.2 HBase 物理存储结构
物理存储结构即为数据映射关系,而在概念视图的空单元格,底层实际根本不存储。
- 名词介绍
- Name Space:命名空间,类似于关系型数据库的 database 概念,每个命名空间下有多个表。
- Table:类似于关系型数据库的表概念。不同的是,HBase 定义表时只需要声明列族即可,不需要声明具体的列。因为数据存储时稀疏的,所有往 HBase 写入数据时,字段可以动态、按需指定。因此,和关系型数据库相比,HBase 能够轻松应对字段变更的场景
- Row:HBase 表中的每行数据都由一个 RowKey 和多个 Column(列)组成,数据是按照 RowKey的字典顺序存储的,并且查询数据时只能根据 RowKey 进行检索,所以 RowKey 的设计十分重要。
- Column:HBase 中的每个列都由 **Column Family(列族)和 Column Qualifier(列限定符)**进行限定,例如 info:name,info:age。建表时,只需指明列族,而列限定符无需预先定义。—列族+属性名
- Time Stamp:用于标识数据的不同版本(version),每条数据写入时,系统会自动为其加上该字段,其值为写入 HBase 的时间。—最近一次数据更新
- Cell:由{rowkey, column Family:column Qualifier, timestamp} 唯一确定的单元。cell 中的数据全部是字节码形式存贮。
3. HBase基础架构
- 架构角色
- Master:实现类为 HMaster,负责监控集群中所有的 RegionServer 实例
- 管理元数据表格 hbase:meta,接收用户对表格创建修改删除的命令并执行
- 监控 region 是否需要进行负载均衡,故障转移和 region 的拆分。
- Region Server
- 负责数据 cell 的处理,例如写入数据 put,查询数据 get 等
- 拆分合并 region 的实际执行者,有 master 监控,有 regionServer 执行。
- Zookeeper
- HBase 通过 Zookeeper 来做 master 的高可用、记录 RegionServer 的部署信息、并且存储有 meta 表的位置信息。
- HBase 对于数据的读写操作时直接访问 Zookeeper 的,在 2.3 版本推出 MasterRegistry模式,客户端可以直接访问 master。使用此功能,会加大对 master 的压力,减轻对 Zookeeper的压力。
- HDFS
- HDFS 为 Hbase 提供最终的底层数据存储服务,同时为 HBase 提供高容错的支持。
- Master:实现类为 HMaster,负责监控集群中所有的 RegionServer 实例