分布式我爱编程

HBase架构简析

2018-02-13  本文已影响147人  益文的圈

一、HBase架构简介

HBase架构图

1、StoreFile

HBase数据的存储单元,底层使用HDFS存储。数据按照Cell(RowKey、Column Family、Column)排列,相同Cell按照timestamp倒序排列

2、HStore

对应一个Table在一个HRegion中的一个Column Family

3、HRegion

对应一个Table的一个Region在一个HRegionServer中的表达
HBase使用RowKey将表水平切割为多个Region

4、HRegionServer

用于存放和管理本地HRegion;
HBase在启动时由HMaster将HRegion分配给HRegionServer管理;
Client直接连接HRegionServer读写数据;

5、WAL

Write Ahead Log。它是HDFS上的文件,所有写操作都会先保证将数据写入WAL文件,防止HRegionServer宕机时MemStore中的数据丢失;
WAL以table + rowkey的方式记录一条条数据操作记录;

6、HMaster

管理HRegionServer,管理和分配HRegion给HRegionServer以实现负载均衡功能;
admin功能:table的DDL操作;

7、Zookeeper

协调系统,存放整个HBase集群的元数据和集群状态信息;
存放了hbase:meta文件所在位置,Client通过该文件定位table:rowkey所属Region及Region所在的RegionServer;

二、数据切分

HBase将Table按照RowKey的范围切分为多个Region,对应RowKey的数据被划分到对应的Region存储;
Region底层使用HDFS存储,在HBase启动时被分配给某一个HRegionServer管理;
总结:

三、集群容灾

1、HFile存储容灾

2、HRegionServer服务容灾

3、HMaster服务容灾

四、数据读写过程

1、数据的写入

2、数据的读取

寻找Region的过程类似,略

五、HBase特性

1、CP系统(强一致性+分区容错性)

当某台RegionServer fail的时候,它管理的Region failover到其他RegionServer时,需要根据WAL来redo(redolog,有一种日志文件叫做重做日志文件),这时候进行redo的Region是unavailable的;所以hbase降低了可用性,提高了一致性。
设想一下,如果redo的region能够响应请求,那么可用性提高了,则必然返回不一致的数据(因为redo可能还没完成),那么hbase就是降低一致性来提高可用性了。

2、顺序磁盘IO

MemStore中的数据Cell是按照RowKey + Column Family + Column排序的,所以持久化到HFile的过程是顺序磁盘IO。数据一旦刷入HFile中就是持久化不可变的。

上一篇下一篇

猜你喜欢

热点阅读