Hbase的实现原理
Posted 大飞聊数据
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hbase的实现原理相关的知识,希望对你有一定的参考价值。
Hbase有三大核心组件:库函数、Master服务器、Region服务器
Master服务器负责分区信息的管理和维护,维护了region服务器的列表。Zookeeper监测到故障region服务器后,会通知Master,因此Master服务器会知道当前Region服务器的工作状态。
Master也负责对region进行分配,一个数据表,会分成多个region,那个region,存储在那台region服务器,由Master做统一分配和管理。
Master也负责对region服务器的负载均衡,由于冷热数据分布不均,导致一些region服务器访问压力过大,一些region服务器访问压力过小,通过对冷热数据的存储调整,可使region服务器负载均衡。
在Hbase中,当一张表越来越大后,就会分成多个region,每个region还会存在不同的region服务器。当客户端获取到region的存储位置后,即可不通过Master服务器,直接和Region服务器完成数据读写操作。
当前一个region大小建议设置为1G-2G,具体大小配置,可基于当前服务器的性能确定。
一个region不会继续进行拆分,并分片存储到不同服务器,除非当前region服务器宕机,否则不会迁移到另外的region服务器。
一台region服务器可存储10-1000个region,hbase作为分布式数据库,大规模集群可达上万个节点,那么是如何实现数据读取的呢?
Hbase有一个.mata.表,也叫元数据表,这个表由两列组成:region ID和region服务器ID
当数据规模越来越大,region和region服务器越来越大,访问.mata. 表的性能就会下降,导致数据读取速度变慢。
Hbase会把.mata.表也会分为多个region,存储在不同的region服务器。
.root.表维护了.meta. region ID和region服务器ID的映射关系,这样便于快速找到.meta.表数据。
在zookeeper程序中,写死了-root-表的存储位置,-root-表只有一个region,不会再分裂成多个region。
这种机制称为Hbase的三层寻址机制,就是说通过Hbase访问数据需要经历以下三步:
1、访问zookeeper程序,找到-root-表
为了提高Hbase的数据访问速度,.meta.表、-root-表都存在内存中,同时hbase支持缓存机制,当经历一遍三层寻址机制后,数据的存储位置就会缓存到客户端。
Hbase缓存更新机制被称为惰性机制,其不会主动更新缓存。如果当一台region服务器宕机,其上的region重新分配到其他region服务器,基于原来的缓存,肯定找不到数据,当基于缓存找不到数据时,就重新经历三层寻址机制,再把新的存储位置缓存,把原来的缓存清理掉。
好了,今天的分享就到这,希望对大家有所帮助,感谢关注。
以上是关于Hbase的实现原理的主要内容,如果未能解决你的问题,请参考以下文章
HBase行锁原理及实现
Hbase的实现原理
HBase行锁原理及实现
HBase 事务和并发控制机制原理
HBase原理和设计
HBase原理之数据读取流程