HBase学习总结
1、HBase简介
HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBase的特点:
1、海量存储 :适合存储PB级别的数据
2、列式存储 :HBase是根据列族存储的,列族下面有很多的列,列族可以在创建表的时候就必须指定
3、极易扩展 :一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)
4、高并发:HBase的单个IO延迟下降的并不多,因此能获得高并发、低延迟的服务
5、稀疏:HBase可以指定多的列,在列为空的条件下,不会占用存储空间
2、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的流程图
4、HBase读流程
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中做标记。