Hbase 相关概念

来源:互联网 发布:高一历史优化学案答案 编辑:程序博客网 时间:2024/05/29 15:48

HRegionServer


HRegionServer 内部管理了一系列的HRegion 对象,每个HRegion对应了
table 中的一个region,HRegion中由多哦个HStore组成,每个HStore对应
了table中的一个column family,可以看出每个columnfamily 其实就是一个集中的
存储单元,因此最好将具备共同IO特性的column放在一个column family 中,这样高效。

MemStore &StoreFile


HStore存储是Hbase存储的核心,由俩个部分组成,一部分是memStore,一部分是
StoreFile.memStore是Sorted Memory Buffer ,用户写入数据首先会放入MemStore,
当memStore满了以后会Flush成一个StoreFile(底层实现是HFile)。


Client 写入 -> 存入MemStore,一直到MemStore 满 -> Flush 成一个StoreFile
,直至增长到一定阈值-》触发Compact合并操作->多个StoreFile 合并成一个StoreFile ,
同时进行版本合并和数据删除-》当StoreFile compact后,逐步形成越来越大的StoreFile->
单个Store File大小超过一个阈值后,会出发Split操作,,把当前Region Spilt 成2个Region。
Region会下线,新Split出的俩个Region会被HMaster分配到相应的HRegionServer上,使原先1个region的压力
一分流到2个region上。


HBase只增加数据,所有的更新和删除操作,都是在Compact阶段做的,所以用户写操作只需要进入到内存
即可立即返回,从而保证了IO高性能。

HLOG


WAL 是用来灾难恢复的。HLog记录所有的数据变更,一旦数据修改,就可以从Log 中回复,每个HRegionServer
维护一个HLog,而不是每个HRegion 一个,这样不同Region(来源于不同的table)的日志就会混在一起,这样做
的目的是不断追加单个文件相对于同时写多个文件而言,可以减少磁盘的寻址次数,因此提高对Table的写性能。
码放是,如果一台HRegionServer下线,为了回复其上的Region,需要将HRegionServer 上的LOG进行拆封,
然后分发到其他HRegionSever 上进行恢复。

客户端(Client)


整个Hbase集群的访问入口
使用HBase RPC 机制与HMaster 和HRegionServer 进行通信。
与HMaster 进行通信进行管理操作。
与HRegionServer进行数据的读写类操作。
包含访问Hbase接口,并维护cache 来加快对Hbase的访问。


Zookeeper 

  协作服务
保证任何时候集群中只有一个HMaster。
存储所有HRegion的寻址入口。
实时监控HRegion Server的上线和下线信息,并实时通知给HMaster。
存储Hbase的Schema 和 table元素据。
Zookeepr Quorum存储 -Meta-表地址,HMaster地址。

HMaster

HMaster 没有单节点问题,HBase可以启动多个HMaster,通过Zookeeper 的Master Election机制保证总有一个Master
在运行主要负责Table 和Region 的管理工作。
管理用户对Table的增删改查操作
管理HRegionServer 的负载均衡,调整Region分布
Region Split后,负责新Region的分布
在HRegionServer 停机以后,负责失效的HRegionServer 上Region迁移工作。

HRegionServer 

维维护Region,处理对这些Hregion的IO请求,向HDFS文件系统中毒写数据
负责切分在运行过程中变得过大的HRegion
Client访问HBase上数据的过程并不需要master参与(寻址访问Zookeeper和HRegion Server,数据读写访问HRegion Server),HMaster 仅仅维护HMaster table 和Region元数据信息,负载很低。