HBase学习总结

版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/201f93d78fbf

逻辑视图:

HBase存储方式为列式存储,最基本的单位是列(column),一列或多列形成一行(row),并由唯一的行键(row key)确定存储。


HBase学习总结_第1张图片

       row1,row2,row3是三条记录唯一的row key值,Column-family1、Column-family2、Column-family3是三个列族,每个列族又有不同数量的列,比如Column-family1包括column1和column2两列,t1:abc和t2:opq是由row1和Column-family1唯一确定的单元cell,这个单元包括两个内容:abc和opq,t1和t2为时间戳。

HBase学习总结_第2张图片

行序是按照行键的字典序进行排序的(字典序:1,10,100,11,12,13……19,2,20,21,22……9,91,92……99),即按照二进制逐字节从左到右依次对比每一个行键,例如row-1


物理存储:

1、HBase表中所有行都是按照row key的字典序排序;

2、表在行的方向上分割为多个region,由[startkey,endkey]表示,不同的region会被master分配给不同的Region Server进行管理;

3、region按大小分割,每个表在开始时只有一个region,随着数据不断增多,region不断增大,达到阈值时,region就会等分为两个新的region。当数据持续增多,就有更多的region;

4、region分布在不同的Region Server上,但不会跨越在不同的Region Server;Region Server一方面维护管理region的状态,另一方面与HMaster交互通信;

5、region是HBase分布式存储和负载均衡的最小单元,它由一个或多个Store组成,每个store保存一个列族,每个store由一个memstore和0到多个StoreFile组成,StoreFile以HFile的格式保存在HDFS上。


HBase学习总结_第3张图片


region定位:

HBase中有两张特殊的表:-ROOT-和.META.

.META.表:记录了用户表的region信息,.META.可以有多个region;

-ROOT-表:记录了.META.表的region信息,-ROOT-只有一个region;

而zookeeper中记录了-ROOT-表的地址


HBase学习总结_第4张图片

因此HBase使用三层结构来定位region:

1.通过zookeeeper file里的文件得到-ROOT-表的地址;

2.通过-ROOT-表查找.META.表的第一个表中相应region的地址;

3.通过.META.表找到所要用户表region的位置。

       三次访问,需要多次网络操作,但client会做一定缓存。


HBase shell操作:

       部分命令清单:

HBase学习总结_第5张图片
Hbase Shell常用命令

HBase相关组件:

1.Client

HBase Client通过RPC与HMaster和Region Server进行通信。HMaster负责region的管理,Region Server负责读写操作。

2.Zookeeper

Zookeeper存储了-ROOT-表及HMaster的地址,Region Server也通过Ephemeral方式注册到Zookeeper中,使得HMaster随时可以感知到各Region Server的健康状态,也避免了HMaster单点故障发生。

1、保证任何时候,集群中只有一个HMaster;

2、存储所有region的寻址入口;

3、实时监控Region Server的上线下线信息,并通知给HMaster;

4、存储HBase的scheme和table元数据

3.HMaster

主要负责table和region的管理:

1、管理用户对table的增删改查工作;

2、为Region Server分配region,负责Region Server的负载均衡;

3、在Region Server停机后,负责其上region的迁移

4.HRegion server

响应client的I/O请求,向HDFS中读写数据。

1、Region Server内部管理了很多HRegion对象,每个HRegion对象对应table中的一个region,HRegion中有多个HStore组成。

2、HStore由两部分组成:MemStore和StoreFile。数据首先会写入MemStore中,当其满了后会溢写为一个StoreFile(实现为HFile),当StoreFile数量增多时会触发compact,将多个StoreFiles合并为一个StoreFile,随着单个StoreFile越来越大,大小超过一定阈值,会触发split操作,把当前的Regionsplit成两个Region,父Region下线,新的两个子Region会被HMaster分配到相应的Region Server上,使得原先一个Region压力得以分流。如下图:

3、在每个Region Server中,存在一个HLog文件用于数据恢复。

HBase学习总结_第6张图片

你可能感兴趣的:(HBase学习总结)