学科分类

HBase架构

HBase构建在Hadoop HDFS之上,Hadoop HDFS为HBase提供了高可靠的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和容错机制。下面,通过一张图介绍一下HBase的整体架构,具体如图1所示。

http://upload-images.jianshu.io/upload_images/4951489-8dee031e87bde745.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

​ 图1 HBase架构

在图1中,HBase含有多个组件。下面,针对HBase架构中的核心组件进行详细介绍,具体如下:

Client

即客户端,它通过RPC协议与HBase进行通信。

Zookeeper

即分布式协调服务,在HBase集群中的主要作用是监控HRegionServer的状态,将HRegionServer的上下线信息实时通知给HMaster,确保集群中只有一个HMaster在工作。

HMaster

即HBase的主节点,用于协调多个HRegion Server,主要用于监控HRegion Server的状态以及平衡HRegion Server之间的负载。除此之外,HMaster还负责为HRegion Server分配HRegion。

在HBase中,如果有多个HMaster节点共存,提供服务的只有一个Master,其他的Master处于待命的状态。如果当前提供服务的HMaster节点宕机,那么其他的HMaster会接管HBase的集群。

HRegion Server

即HBase的从节点,它包括了多个HRegion,主要用于响应用户的I/O请求,向HDFS文件系统读写数据。

HRegion

即HBase表的分片,每个Region中保存的是HBase表中某段连续的数据。

Store

每一个HRegion包含一或多个Store。每个Store用于管理一个Region上的一个列族。

MemStore

即内存级缓存,MemStore 存放在store中的,用于保存修改的数据(即KeyValues形式)。当MemStore存储的数据达到一个阀值(默认128MB)时,数据就会被进行flush操作,将数据写入到StoreFile文件。MemStore的flush操作是由专门的线程负责的。

StoreFile

MemStore中的数据写到文件后就是StoreFile,StoreFile底层是以HFile文件的格式保存在HDFS上。

HFile

即HBase中键值对类型的数据均以HFile文件格式进行存储。

HLog

即预写日志文件,负责记录HBase修改。当HBase读写数据时,数据不是直接写进磁盘,而是会在内存中保留一段时间。这样,当数据保存在内存中时,很有可能会丢失。如果将数据写入预写日志文件中,然后再写入到内存中,一旦系统出现故障时,则可以通过这个日志文件恢复数据。

点击此处
隐藏目录