HBase(一): HBase 表结构及数据模型和架构的理解

文章目录

      • 1. 大数据领域常用存储介绍对比:
      • 2. HBase 表概念:
      • 3. Region
      • 4 HBase 架构图
        • 4.1架构图剖析:
          • 4.1.1 架构中涉及的角色
          • 4.1.2 memstore
          • 4.1.3 storefile
          • 4.1.4 blockcache: 读缓存
          • 4.1.4 HLog

1. 大数据领域常用存储介绍对比:

HDFS: NOSQL
Hive:有SQL 慢
HBase: NoSQL 快 (Phoenix + HBase)
Kudu: Impala + Kudu 组合
CASSAndra

2. HBase 表概念:

一个HBase表由一个或者多个列族(CF)组成,一个列族又包含很多列(限定符,CQ),每列存储相对应的值,和传统的关系型数据库不一样HBase是稀疏表,一些列根本不存值,但是也不会存储null值,且该列不会被添加到表中,一旦一个rowkey及相对应的列值形成了,将会被存储到表中。

Rowkey : PK 每一条数据的主键
Column Family: 列族 将表进行切割的 简称CF (CF数量尽量不要超过3,过多维护的开销大)
Column :数据列族
Version Number 类型为Long,默认值为系统时间戳
Value :
HBase(一): HBase 表结构及数据模型和架构的理解_第1张图片
图说明:一行row的数据是可以包含一个或多个CF,不建议设置超过3个。
Column是属于CF,一个CF可以包含1个或多个Column。

3. Region

HBase 将数据分布存储在多个服务器中,所以表被分割成多个region,每个region将会存储一个指定区间的数据。region将会被分配到RegionServer以服务于每个region的内容。
每个region 都有一个起始健和一个结束键来定义他的边界,所有这些信息将随着文件保存在region中,也会保存在Hbase:meta表中。region可以合并和分裂
HBase(一): HBase 表结构及数据模型和架构的理解_第2张图片
物理层面Region:
一个RegionServer管理1个或多个Region;
一个Region管理1个或多个CF(列族)
逻辑层面Region:
表按照rowkey范围划分不同的region,region按列族划分不同的store。
store包含memstore 和 storefile。

建表时默认只有一个region,假如指定spilt rowkey,就会有多个region。
假如 有100w 数据 写到50w的时候 自动split(分裂) ,就形成region2,这时候region2就可以理解为字表,当region的行数继续写达到阈值,region继续分裂。不同的region被HMater分配给合适的HRegionServer管理。

HBase(一): HBase 表结构及数据模型和架构的理解_第3张图片

  • 表按照rowkey范围划分不同的region,region按列族划分不同的store。store包含memstore 和 storefile。

数据模型逻辑视图 如下图
HBase(一): HBase 表结构及数据模型和架构的理解_第4张图片

  • 整个数据是按照rowkey,字典排序
  • null值是不会存储的
  • 整个表是以稀疏表的方式存储

数据模型物理视图 如下图HBase(一): HBase 表结构及数据模型和架构的理解_第5张图片

  • 按KV结构
    K: rowkey
    V: CF,Column ,TimeStamp ,Value
  • 每个K V只存储一个单元格cell数据
  • 不同的CF数据是存储在不同的文件里

4 HBase 架构图

HBase(一): HBase 表结构及数据模型和架构的理解_第6张图片

4.1架构图剖析:

4.1.1 架构中涉及的角色

HBase是一个分布式的架构,除去底层存储的HDFS外,HBase本身从功能上可以分为三块:Zookeeper群、Master群和RegionServer群。

DML 读写不经过master;DDL经过master

  • Zookeeper群:HBase集群中不可缺少的重要部分,主要用于存储Master地址、协调Master和RegionServer等上下线,存储临时数据等等。RS主动向ZK注册,使得Master可以随时感知RS的健康状态。
  • Master群:Master主要是做一些管理操作,如:
    负责hbase的table region的管理
    rs的region的负载均衡
    region的分裂 及分裂后的region的分配
    rs挂的时候 region迁移,
    一般数据的读写操作并不需要经过Master集群,所以Master一般不需要很高的配置即可
  • RegionServer群:RegionServer群是真正数据存储的地方,每个RegionServer由若干个region组成,而一个region维护了一定区间rowkey值的数据。
    RS主要负责数据的路由,数据读写和数据的持久化。

一个RS节点包含多个region,
一个region根据CF划分为store,
一个store包含1个memstore、0或多个storefile。
一个region只能属于一个表,在一个RS节点上

4.1.2 memstore

写缓冲
region级别(store级别)
有序,当满了flush成为一个storefile
当storefile文件数量增加到一定阈值,触发compaction 合并 (后续博文介绍)

4.1.3 storefile

storefile 合并 逐步形成越来越大的storefile。 (后续博文介绍)

4.1.4 blockcache: 读缓存

是RS级别 一个RS只有一个blockcache,启动时完成初始化动作。

4.1.4 HLog

Write Ahead Log WAL
HLog是HBase实现WAL方式产生的日志信息,其内部是一个简单的顺序日志,每个RS上的region都共享一个HLog,所有对于该RS上的 region数据写入都被记录到该HLog中。HLog的主要作用就是在RS出现意外崩溃的时候,可以尽量多的恢复数据,这里说是尽量多,因为在一般情况 下,客户端为了提高性能,会把HLog的auto flush关掉,这样HLog日志的落盘全靠操作系统保证,如果出现意外崩溃,短时间内没有被fsync的日志会被丢失

你可能感兴趣的:(HBase)