HBase学习总结

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

逻辑视图:

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


       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为时间戳。

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


物理存储:

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上。



region定位:

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

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

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

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


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

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

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

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

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


HBase shell操作:

       部分命令清单:

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文件用于数据恢复。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文首先简单介绍了HBase,然后重点讲述了HBase的高并发和实时处理数据 、HBase数据模型、HBase物理...
    达微阅读 2,854评论 1 13
  • 一、简介 Hbase:全名Hadoop DataBase,是一种开源的,可伸缩的,严格一致性(并非最终一致性)的分...
    菜鸟小玄阅读 2,618评论 0 12
  • 简介 HBase是高可靠性,高性能,面向列,可伸缩的分布式存储系统,利用HBase技术可在廉价PC Serve...
    九世的猫阅读 2,394评论 1 6
  • 一、HBase简介 Hbase是什么 HBase是一种构建在HDFS之上的分布式、面向列、多版本、非关系型的数据库...
    便利蜂数据平台阅读 1,023评论 0 4
  • 一、HBase简介 Hbase是什么HBase是一种构建在HDFS之上的分布式、面向列、多版本、非关系型的数据库。...
    龙梦起飞阅读 5,113评论 1 6

友情链接更多精彩内容