这是我参与「第四届青训营 」笔记创作活动的第11天。
深入浅出 HBase 实战
HBase的数据模型
Hbase的数据模型可以从两个维度来理解:逻辑模型和物理模型。
逻辑模型 HBase可以理解为是一个稀疏的,长期存储的,多维度和排序的映射表,表中的每一行可以有不同的列。列是HBase中最基本的单位,一列或者多列构成了行,行有行键,即RowKey,每一行的RowKey都是唯一的,相同行键的put操作被认为是对该行的更新操作。 HBase的表有若干行,每行有很多列,列中的值有多个版本,每个版本的值称为一个单元格,每个单元格存储的不同时刻为该列的值。
物理模型 在上述逻辑模型来说,HBase表是稀疏的行的集合,但是在物理模型上,HBase表则是按列分开存储的。 按照列来划分列族,存储每一行的不同列的物理文件,一个列族的数据存放在多个HFile中,一个列族的数据会被同一个region管理,物理上存放在一起。
HFile: HFile是HBase存储数据的文件组织形式,HFile共经历了三个版本,其中,HFileV1版本的在实际使用过程中发现它占用内存多,HFileV2版本针对此进行了优化,HFileV3版本基本和V2版本相同,只是在cell层面添加了Tag数组的支持。
HBase集群架构:
HBase 的核心架构由五部分组成,分别是 HBase Client、HMaster、Region Server、ZooKeeper 以及 HDFS。
1.HBase Client 为用户提供了访问 HBase 的接口,可以通过元数据表来定位到目标数据的 RegionServer,另外 HBase Client 还维护了对应的 cache 来加速 Hbase 的访问,比如缓存元数据的信息。
2.HMaster 是 HBase 集群的主节点,负责整个集群的管理工作,可以分配Region负责启动或分配Region到具体的 RegionServer;还可以负载均衡和进行维护数据。
3.Region Server 直接对接用户的读写请求,是真正的干活的节点他可以管理 HMaster 为其分配的 Region;还负责与底层的 HDFS交互,存储数据到 HDFS;以及负责 Region 变大以后的拆分以及 StoreFile 的合并工作。
4.Zookper:HBase 通过 ZooKeeper 来完成选举 HMaster、监控 Region Server、维护元数据集群配置等工作,负责选举HMaster,监控Region Server,以及维护元数据和集群配置。
5.HDFS 为 HBase 提供底层数据存储服务,同时为 HBase提供高可用的支持, HBase 将 HLog 存储在 HDFS 上,当服务器发生异常宕机时,可以重放 HLog 来恢复数据。