hbase的组织架构
客户端
hbase的客户端是访问hbase的客户端可以是linux的shell命令,java的等
zookeeper
zookeeper用于监控Hmasetr的状态,保证有且只有一个Hmaster活跃,达到高可用的目的。可以存储元数据表的寻址入口,元数据表中存储着region的寻址入口。实时监控regionserver的上线下线,并通知Hmaster。
Hmaster
为HRegionServer分配region(新建表)
负责维持regionserver的负载均衡
负责region的重新分配(一个region的数据到达阈值后会将region分割形成两个region,Hmaster将这两个region分配给Hregionserver维持每个Hregionserver 的负载均衡。
Hregionserver宕机后将其管理的region重新分配给其他Hregionserver进行管理)
hdfs上的垃圾的回收
处理schema的更新请求
regionserver
维护Hmaster分配的region(管理本机的region)
处理客户端的读写请求,与hdfs进行交互
负责具体的切分region
Hlog
对Hbase的操作进行记录。使用WAL(优先写入Hlog)(put:操作先写入Hlog在写memstore,这样可以防止数据的丢失,Hlog中可能存储数张表的操作记录hlog直接存储在hdfs上没有缓存),若是数据丢失可以通过hlog回滚,如果在写入日志时宕机数据将会丢失
Hregion
Hregion是hbase的存储和负载中最小的一单元,他是表或者表的一部分。
store
相当于列簇,里面有一个Memstore(大小为128M)
Memstore
内存缓冲区,用于将数据批量刷新到hdfs中,默认大小为128M
一个memstor对应多个hfile(写入hdfs系统的文件)
HStoreFile :
和HFile概念意义,不过是一个逻辑概念。HBase中的数据是以HFile存储在Hdfs上。
storefile
HFile是数据存储得实际载体。这里先说一下HFile和StoreFile。Hbase是基于java编写得,那么所有物理上得东西都有一个对象与它对象,在物理存储上我们管StoreFile刷写而成得文件叫HFile,StoreFile是HFile得抽象类而已。
组件关系
hmster:hregionserver=1:* 一对多
hregionserver:hregion=1:* 一对多
hregion:hstore=1:* 一对多
hstore:memstore=1:1 一对一
store:storefile=1:* 一对多
storefile:hfile=1:1 一对一