Hadoop之HBase原理

1.  HBase的写操作步骤

    

    1.  客户端执行put操作,HBase先将数据写入WAL文件,WAL文件是顺序写入的,所有新写入的日志被写入到WAL文件的末尾

    2.  WAL文件写入完成后,HBase将数据写入MemStore,当MemStore出现故障,可以根据WAL文件恢复

    3.  当MemStore中的数据满了以后,HBase会执行flush的操作,将memstore写入到HFile      

2.  HBase的读过程与META表

    1.  meta表

        1.  作用与位置        

            保存了用户表的Region信息

            meta表的信息保存在zookeeper中

        2.  查看meta表

            表结构  describe 'hbase:meta'

            表内容  scan 'hbase:meta'

    2.  HBase读取数据的过程

        

 

        1.  客户端从zookeeper获取meta表的region信息

        2.  客户端从对应的RegionServer读取meta表的数据,获取用户表的region信息

        3.  客户端从对应的RegionServer读取用户表的数据,先从block cache,没有就读取HFile

3.  HBase的读合并与读放大

    1.  读合并

        HBase读取数据会从不同的位置读取。

        1.  从Block Cache读缓存中读取所需的数据

        2.  从MemStore写缓存中读取数据

        3.  如果上面都没有,就从HFile中读取数据。

        上面的过程就叫做读合并

    2.  读放大

        一个MemStore对应的数据可能存储于多个不同的HFile中,因此HBase读操作中,可能需要读取多个HFile来获取想要的数据,这个过程就叫读放大,会影响HBase的性能

4.  Region的分裂与读操作的负载均衡

    因为单个region大小有限,随着数据的增多,一个region会进行分裂,然后分布到不同的region server上

5.  HBase的异常恢复

    当regionserver异常终止,zookeeper通过其监听机制感知这一事件,并通知HMaster;HMaster会将region的WAL日志拆分,将失效的region重新分配到新的region server上,在新的region server执行wal的重做,将数据写到memstore,将数据刷到HFile,完全数据的恢复。        

posted @ 2022-07-08 11:36  奋斗史  阅读(60)  评论(0)    收藏  举报