Hbase的实现原理

Posted 大飞聊数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hbase的实现原理相关的知识,希望对你有一定的参考价值。

       Hbase有三大核心组件:库函数、Master服务器、Region服务器

图 Hbase核心组件
【库函数】
        其作用是链接每个客户端
【Master服务器】
        Master服务器负责分区信息的管理和维护,维护了region服务器的列表。Zookeeper监测到故障region服务器后,会通知Master,因此Master服务器会知道当前Region服务器的工作状态。
       Master也负责对region进行分配,一个数据表,会分成多个region,那个region,存储在那台region服务器,由Master做统一分配和管理。
        Master也负责对region服务器的负载均衡,由于冷热数据分布不均,导致一些region服务器访问压力过大,一些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是如何解决这个问题呢?
             Hbase会把.mata.表也会分为多个region,存储在不同的region服务器。
            .root.表维护了.meta. region ID和region服务器ID的映射关系,这样便于快速找到.meta.表数据。
         在zookeeper程序中,写死了-root-表的存储位置,-root-表只有一个region,不会再分裂成多个region。
          这种机制称为Hbase的三层寻址机制,就是说通过Hbase访问数据需要经历以下三步:
         1、访问zookeeper程序,找到-root-表
         2、通过-root-表,找到元数据.meta.表
         3、通过.meta.表,找到需访问的数据

图 Hbase三层寻址机制
        为了提高Hbase的数据访问速度,.meta.表、-root-表都存在内存中,同时hbase支持缓存机制,当经历一遍三层寻址机制后,数据的存储位置就会缓存到客户端。
           Hbase如何实现缓存更新呢?
           Hbase缓存更新机制被称为惰性机制,其不会主动更新缓存。如果当一台region服务器宕机,其上的region重新分配到其他region服务器,基于原来的缓存,肯定找不到数据,当基于缓存找不到数据时,就重新经历三层寻址机制,再把新的存储位置缓存,把原来的缓存清理掉。
           好了,今天的分享就到这,希望对大家有所帮助,感谢关注。

以上是关于Hbase的实现原理的主要内容,如果未能解决你的问题,请参考以下文章

HBase行锁原理及实现

Hbase的实现原理

HBase行锁原理及实现

HBase 事务和并发控制机制原理

HBase原理和设计

HBase原理之数据读取流程