HBase学习总结

1、HBase简介

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。

HBase的特点:

1、海量存储 :适合存储PB级别的数据

2、列式存储 :HBase是根据列族存储的,列族下面有很多的列,列族可以在创建表的时候就必须指定

3、极易扩展 :一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)

4、高并发:HBase的单个IO延迟下降的并不多,因此能获得高并发、低延迟的服务

5、稀疏:HBase可以指定多的列,在列为空的条件下,不会占用存储空间

2、HBase架构

hbase 读写一致性 hbase 读写性能_数据


1)Client

Client包含了访问Hbase的接口,另外Client还维护了对应的cache来加速Hbase的方法,比如chae.META信息。

2)Zookeeper

HBase通过Zookeeper做高可用,RegionServer监控、元数据的入口以及集群配置维护等工作,通过ZK来保证集群中只有一个master提供服务

3)HMaster

为regionserver分配Region,维护整个集群的负载均衡,维护整个集群的元数据信息。

4)HregionServer

直接对用户的读写请求,是真正的干活节点,它主要的功能是管理master为其分配的Region,处理来自客户端的请求,负责和底层的HDFS的交互,存储数据到HDFS上 ,负责Region变大以后的拆分,负责Storefile的合并工作。

5)HDFS为Hbase提供最终的底层数据服务,同时为HBase提供高可用的支持,具体包括,提供元数据和表数据的底层分布式存储服务,数据多副本,保证的高可靠和高可用性。

3、HBase的写流程

1、构建Put对象:一个Put对象代表一行记录,可以添加多个列的数据

Rowkey为 021464812658 三个单元格为 name,age,address

HBase主要提供了两个写数据的接口,一个是写入单行数据,即Put接口,另一个是PutList接口,可以批量写入多行数据。

先简单下写入HBase的流程图

hbase 读写一致性 hbase 读写性能_HDFS_02


4、HBase读流程

hbase 读写一致性 hbase 读写性能_hbase_03

1、Client先访问zookeeper,从meta表读取region数据,然后读取meta表中的数据。meta中又存储了用户表的region信息。

2、根据namespace、表名和rowkey在meta表中找到对应region信息。

3、找到这个region对应的regionserver。

4、查找对应的region。

5、先从MemStore找数据,如果没有,再到BlockCache里面读。

6、BlockCache还没有,再到StoreFile上读

7、如果从StoreFile里面读取的数据,不是直接返回给客户端,而是先写入BlockCache,再返回给客户端。

5、数据flush过程

1)当MemStore数据达到阈值(128M,老版本是64M),将数据刷到硬盘,将内存中的数据,同时删除HLog的历史数据。

2)并将数据存入到HDFS上。

3)再HLog中做标记。