1.Client
用户通过Client(客户端)访问HBase。同时,为了提高对HBase的访问速度和效率,客户端还维护了一份缓存。
2.Zookeeper
Zookeeper主要起的作用是协同服务,这具体包括以下几个方面:
(1)HBase通过Zookeeper实现HMaster的高可用。同一时刻,Zoopkeeper保证集群中只有一个HMaster;如果HMaster出现异常,Zoopkeeper会通过选举产生新的HMaster。
(2)Zoopkeeper监控RegionServer的状态,如果RegionServer有异常或有新节点加入,Zookeeper会以回调方式通知HMaster。
(3)Zoopkeeper存储HBase元数据的统一入口地址。HBase真正的元数据存放在自己的meta表中,meta表的位置信息存储在Zookeeper中。
3.HMaster
HMaster是HBase集群的主节点,它的职责主要包括: RegionServer状态的监控、RegionServer的故障转移、元数据信息的更新、Region的分配、Region的故障转移和集群的负载均衡等。
4. HRegionServer
HRegionServer是HBase集群的从节点,负责用户的读写请求。它的职责主要包括:管理主节点分配给它的Region、处理读写请求、与底层HDFS的交互、拆分变大的Region
以及StoreFile的合并。
5.Region
Region是HBase表的分片。HBase根据RowKey的不同的把表切分成不同的Region。一个Region由一个RegionServer管理,同一个RegionServer中可以管理多个不同的Region。
6.Store
HBase表中的一个列族对应一个Store。Store中包含MemStore和StoreFile。
7.MemStore
MemStore就是内存存储,用于缓存保存刚写入HBase的数据或从HBase中读取的数据。MemStore很小,一般几兆到几十兆。
8. StoreFile
HBase写入数据时,当MemStore存储满后,会溢写磁盘到StoreFile中。
9.HFile
HFile是实际的存储文件。StoreFile是以HFile的形式存储在HDFS的。
10. HDFS
HDFS提供真正的底层数据存储服务,具体功能如下:
l 提供表数据和元数据的底层分布式存储服务
l 数据多副本,保证的HBase的高可靠和高可用
11.Write-Ahead logs
HBase读写数据时,数据会先在内存中保留一段时间,然后再写进磁盘。节点故障等因素有可能导致内存中的数据丢失。为了解决这个问题,HBase会先将数据写在Write-Ahead logfile日志文件中,然后再写入内存。这样,在系统出现故障时,数据就可以通过这个日志文件进行重建