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

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 :
在这里插入图片描述
图说明:一行row的数据是可以包含一个或多个CF,不建议设置超过3个。
Column是属于CF,一个CF可以包含1个或多个Column。

3. Region

HBase 将数据分布存储在多个服务器中,所以表被分割成多个region,每个region将会存储一个指定区间的数据。region将会被分配到RegionServer以服务于每个region的内容。
每个region 都有一个起始健和一个结束键来定义他的边界,所有这些信息将随着文件保存在region中,也会保存在Hbase:meta表中。region可以合并和分裂
在这里插入图片描述
物理层面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管理。

在这里插入图片描述

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

数据模型逻辑视图 如下图
数据模型逻辑视图

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

数据模型物理视图 如下图在这里插入图片描述

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

4 HBase 架构图

在这里插入图片描述

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的日志会被丢失

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冬瓜螺旋雪碧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值