HBase的应用场景及架构原理

一、HBase在实际业务场景中的应用

HBase是一个构建在HDFS上的分布式列存储系统;HBase是Apache Hadoop生态系统中的重要一员,主要用于海量结构化数据存储
HBase能做什么?

  • 海量数据存储
  • 准实时查询

举例说明HBase在实际业务场景中的应用

  • 交通
  • 金融
  • 电商
  • 移动

二、HBase的特点

  • 容量大:HBase单表可以有百亿行,百万列,数据矩阵横向和纵向两个纬度所支持的数据量级别都非常具有弹性
  • 稀疏性:为空的列并不占用存储空间,表可以设计的非常稀疏
  • 多版本:HBase每一列的数据存储有多个Version
  • 面向列:HBase是面向列的存储和权限控制,并支持独立检索。列式存储,其数据在表中是按照某列存储的,这样在查询只需要少数几个字段的时候,能大大减少读取的数据量。
  • 扩展性:底层依赖于HDFS
  • 高可靠性:WAL机制保证了数据写入时不会因集群异常而导致写入数据丢失:Replication机制保证了在集群出现严重的问题时,数据不会发生丢失或损坏。而HBase底层使用HDFS,HDFS本身也有备份。
  • 高性能:底层的LSM数据结构和RowKey有序排列等架构上的独特设计,使得HBase具有非常的写入性能。region切分、主键索引和缓存机制使得HBase在海量数据下具备一定的随机读取性能,该性能针对Rowkey的查询能够达到毫秒级。

三、HBase数据模型并举例说明

(1)逻辑存储模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
RowKey:Hbase使用Rowkey来唯一的区分某一行的数据。
Column Family(列族):Hbase通过列族划分数据的存储,列族下面可以包含任意多的列,实现灵活的数据存取。Hbase的列族不是越多越好,官方推荐的是列族最好小于或者等于3。我们使用的场景一般是1个列族。
Time Stamp(时间戳):TimeStamp对Hbase来说至关重要,因为它是实现Hbase多版本的关键。在Hbase中使用不同的timestame来标识相同rowkey行对应的不通版本的数据。
Cell:HBase 中通过 rowkey 和 columns 确定的为一个存储单元称为 cell。每个 cell 都保存着同一份 数据的多个版本。版本通过时间戳来索引。

(2)物理存储模型

Hbase的Table中的所有行都按照row key的字典序排列。Table 在行的方向上分割为多个Region。Region按大小分割的,每个表开始只有一个region,随 着数据增多,region不断增大,当增大到一个阀值的时候, region就会等分会两个新的region,之后会有越来越多的 region。
在这里插入图片描述
在这里插入图片描述Region是HBase中分布式存储和负载均衡的最小单元。 不同Region分布到不同RegionServer上。
在这里插入图片描述 Region虽然是分布式存储的最小单元,但并不是存储 的最小单元。Region由一个或者多个Store组成,每个store保存一个 columns family。每个Strore又由一个memStore和0至多个StoreFile组成。memStore存储在内存中,StoreFile存储在HDFS上。
在这里插入图片描述

四、HBase基本架构

在这里插入图片描述
包括了HMaster、HRegionSever、HRegion、HLog、Store、MemStore、StoreFile、HFile等。HBase底层依赖HDFS,通过DFS Cilent进行HDFS操作。HMaster负责把HRegion分配给HRegionServer,每一个HRegionServer可以包含多个HRegion,多个HRegion共享HLog,HLog用来做灾难恢复。每一个HRegion由一个或多个Store组成,一个Store对应表的一个列族,每个Store中包含与其对应的MemStore以及一个或多个StoreFile(是实际数据存储文件HFile的轻量级封装),MemStore是在内存中的,保存了修改的数据,MemStore中的数据写到文件中就是StoreFile。

(1)HMaster

HMaster的主要功能有:

  • 把HRegion分配到某一个RegionServer。
  • 有RegionServer宕机了,HMaster可以把这台机器上的Region迁移到active的RegionServer上。
  • 对HRegionServer进行负载均衡。
  • 通过HDFS的dfs client接口回收垃圾文件(无效日志等)
    注:HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行。

(2)HRegionServer

HRegionServer的主要功能有:

  • 维护HMaster分配给它的HRegion,处理对这些HRegion的IO请求,也就是说客户端直接和HRegionServer打交道。(从图中也能看出来)
  • 负责切分正在运行过程中变得过大的HRegion

(3)基本架构

HBase构建在HDFS之上,其组件包括 Client、zookeeper、HDFS、Hmaster以及HRegionServer。Client包含访问HBase的接口,并维护cache来加快对HBase的访问。Zookeeper用来保证任何时候,集群中只有一个master,存贮所有Region的寻址入口以及实时监控Region server的上线和下线信息。并实时通知给Master存储HBase的schema和table元数据。HMaster负责为Region server分配region和Region server的负载均衡。如果发现失效的Region server并重新分配其上的region。同时,管理用户对table的增删改查操作。Region Server 负责维护region,处理对这些region的IO请求并且切分在运行过程中变得过大的region。
在这里插入图片描述
HBase 依赖ZooKeeper,默认情况下,HBase 管理ZooKeeper 实例。比如, 启动或者停止ZooKeeper。Master与RegionServers 启动时会向ZooKeeper注册。因此,Zookeeper的引入使得 Master不再是单点故障。
在这里插入图片描述
Client每次写数据库之前,都会首先血Hlog日志。记录写操作。如果不做日志记录,一旦发生故障,操作将不可恢复。HMaster一旦故障,Zookeeper将重新选择一个新的Master 。无Master过程中,数据读取仍照常进行。但是,无master过程中,region切分、负载均衡等无法进行。RegionServer出现故障的处理原理是定时向Zookeeper汇报心跳,如果一旦时 间内未出现心跳HMaster将该RegionServer上的Region重新分配到其他RegionServer上。失效服务器上“预写”日志由主服务器进行分割并派送给新的 RegionServer 。Zookeeper是一个可靠地服务,一般配置3或5个Zookeeper实例。
在这里插入图片描述
寻找RegionServer定位的顺序是ZooKeeper --ROOT-(单Region) -.META. -用户表 。如上图所示。-ROOT- 表包含.META.表所在的region列表,该表只会有一 个Region。 Zookeeper中记录了-ROOT-表的location。 .META. 表包含所有的用户空间region列表,以及 RegionServer的服务器地址。

参考文章:

扫描二维码关注公众号,回复: 11360810 查看本文章

以上内容仅供参考学习,如有侵权请联系我删除!
如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。
您的鼓励就是博主最大的动力!

猜你喜欢

转载自blog.csdn.net/weixin_45366499/article/details/106871948