【HBase】底层原理


系统架构

在文章【HBase】基本介绍和基础架构中已经有简单介绍
在这里插入图片描述
Client —— 包含访问hbase的接口,client维护着一些cache来加快对hbase的访问,比如region的位置信息。
Zookeeper:
1.保证任何时候,集群中只有一个master
2.存贮所有Region的寻址入口----root表在哪台服务器上。
3.实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master
4.存储Hbase的schema,包括有哪些table,每个table有哪些column family
Master:
1.为Region server分配region
2.负责region server的负载均衡
3.发现失效的region server并重新分配其上的region
4.HDFS上的垃圾文件回收
5.处理schema更新请求
Region Server:
1.Region server维护Master分配给它的region,处理对这些region的IO请求
2.Region server负责切分在运行过程中变得过大的region

client访问HBase数据的过程中并不需要HMaster的参与,是直接通过ZooKeeper读取HRegionServer中Meta表存放的HRegion位置


表数据模型

基本介绍在【HBase】表模型和基本操作介绍

注意:
1.列族的访问控制、磁盘和内存的使用统计都是在列族层面进行,一般一张表不要设置太多列族,因为列族越多,读取一行数据时所要参与IO、搜寻的文件就越多
2.每条数据默认3个版本号


物理存储

在这里插入图片描述
1.Table中所有行都按照rowKey的字典顺序排列,并且在行的方向上分割为多个HRegion
2.HRegion是HBase中分布式存储和负载均衡的最小单元,不同的HRegion可以分布在不同的HRegionServer上,但同一个HRegion不会拆分到不同的HRegionServer
3.HRegion由多个Store组成,每个Store保存一个列族(Column Family)
4.HFile是一种文件存储格式,类似于ORC、Parquet

meta表的数据信息

ROW                              COLUMN+CELL
                                                                                
 hbase:namespace,,1557280798528. column=info:regioninfo, timestamp=1557280800325, value={ENCODED => 56c88e849283c869e74095d5
 56c88e849283c869e74095d5bf616b4 bf616b49, NAME => 'hbase:namespace,,1557280798528.56c88e849283c869e74095d5bf616b49.', START
 9.                              KEY => '', ENDKEY => ''}                                                                   
 hbase:namespace,,1557280798528. column=info:seqnumDuringOpen, timestamp=1557280800325, value=x00x00x00x00x00x00x00x
 56c88e849283c869e74095d5bf616b4 02                                                                                         
 9.                                                                                                                         
 hbase:namespace,,1557280798528. column=info:server, timestamp=1557280800325, value=node02.hadoop.com:60020                 
 56c88e849283c869e74095d5bf616b4                                                                                            
 9.                                                                                                                         
 hbase:namespace,,1557280798528. column=info:serverstartcode, timestamp=1557280800325, value=1557280788349                  
 56c88e849283c869e74095d5bf616b4                                                                                            
 9.                                                                                                                         
 myuser,,1557285598626.9a6ee8080 column=info:regioninfo, timestamp=1557285599647, value={ENCODED => 9a6ee8080ee16457bb791a10
 ee16457bb791a10cca6c498.        cca6c498, NAME => 'myuser,,1557285598626.9a6ee8080ee16457bb791a10cca6c498.', STARTKEY => ''
                                 , ENDKEY => ''}                                                                            
 myuser,,1557285598626.9a6ee8080 column=info:seqnumDuringOpen, timestamp=1557285599647, value=x00x00x00x00x00x00x00x
 ee16457bb791a10cca6c498.        02                                                                                         
 myuser,,1557285598626.9a6ee8080 column=info:server, timestamp=1557285599647, value=node02.hadoop.com:60020                 
 ee16457bb791a10cca6c498.                                                                                                   
 myuser,,1557285598626.9a6ee8080 column=info:serverstartcode, timestamp=1557285599647, value=1557280788349                  
 ee16457bb791a10cca6c498.                                                                                                   
 user,,1557283951792.5b54e4569a9 column=info:regioninfo, timestamp=1557284223555, value={ENCODED => 5b54e4569a9e7f541340077f
 e7f541340077ff35c168f.          f35c168f, NAME => 'user,,1557283951792.5b54e4569a9e7f541340077ff35c168f.', STARTKEY => '', 
                                 ENDKEY => ''}                                                                              
 user,,1557283951792.5b54e4569a9 column=info:seqnumDuringOpen, timestamp=1557284223555, value=x00x00x00x00x00x00x00x
 e7f541340077ff35c168f.          05                                                                                         
 user,,1557283951792.5b54e4569a9 column=info:server, timestamp=1557284223555, value=node01.hadoop.com:60020                 
 e7f541340077ff35c168f.                                                                                                     
 user,,1557283951792.5b54e4569a9 column=info:serverstartcode, timestamp=1557284223555, value=1557280783177                  
 e7f541340077ff35c168f.                                                                                                     
3 row(s) in 0.0500 seconds
原文地址:https://www.cnblogs.com/zzzsw0412/p/12772430.html