Hbase的工作原理

 

HBase逻辑上的表可能会被划分成多个HRegion,然后存储到HRegion Server群中。HBase Master Server中存储的是从数据到HRegion Server的映射。首先client通过hbaserpc机制与hmasterhregion server通信进行管理类的操作和数据的读写操作。HBase中所有的服务器都是通过ZooKeeper来进行协调,HRegionServer也会把自己以Ephemeral方式注册到 Zookeeper中,使得HMaster可以随时感知到各个HRegionServer的健康状态。此外,Zookeeper也避免了HMaster的单点问题。HMaster的主要任务就是要告诉每台HRegion Server它要维护那些HRegion。当一台新的HRegion Server登录到HMaster时,HMaster会告诉它等待分配数据。HRegion Server主要负责响应用户I/O请求,向HDFS文件系统中读写数据。HRegion Server内部管理了一系列HRegion对象,每个HRegion对应了Table中的一个RegionHRegion中由多个HStore组成。每个HStore对应了Table中的一个Column Family的存储。HStore其中由两部分组成,一部分是MemStore,一部分是StoreFiles。用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile,当StoreFile文件数量增长到一定阈值,会触发Compact合并操作,将多个StoreFiles合并成一个StoreFile,合并过程中会进行版本合并和数据删除(因此可以看出HBase其实只有增加数据,所有的更新和删除操作都是在后续的compact过程中进行的)。当StoreFiles Compact后,会逐步形成越来越大的StoreFile,当单个StoreFile大小超过一定阈值后,会触发Split操作,同时把当前Region Split2Region,父Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer 上,使得原先1Region的压力得以分流到2Region上。一旦HRegion Server意外退出,MemStore中的内存数据将会丢失,这就需要引入HLog了,每个HRegion Server中都有一个HLog对象,在每次用户操作写入MemStore的同时,也会写一份数据到HLog文件中HLog文件定期会滚动出新的,并删除旧的文件,当HRegion Server意外终止后,HMaster会通过Zookeeper感知到,HMaster首先会处理遗留的 HLog文件,将其中不同RegionLog数据进行拆分,分别放到相应region的目录下,然后再将失效的region重新分配,领取到这些regionHRegion ServerLoad Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flushStoreFiles,完成数据恢复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值