大数据技术01|HBase数据模型

1.HBase数据模型概述

  1. HBase是一个稀疏、多维度、排序的映射表,这张表的索引是行键、列族、列限定符和时间戳
  2. 每个值是一个未经解释的字符串,没有数据类型
  3. 表在水平方向由一个或者多个列族组成,一个列族中可以包含任意多个列,同一个列族里面的数据存储在一起
  4. HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留(这是和HDFS只允许追加不允许修改的特性相关的)
    在这里插入图片描述
  • 表:HBase采用表来组织数据,表由行和列组成,列划分为若干个列族

  • 行:每个HBase表都由若干行组成,每个行由行键(row key)来标识。

  • 列族:一个HBase表被分组成许多“列族”(Column Family)的集合,它是基本的访问控制单元

  • 列限定符:列族里的数据通过列限定符(或列)来定位

  • 单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[]

  • 时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引

  • HBase中需要根据行键、列族、列限定符和时间戳来确定一个单元格,因此,可以视为一个“四维坐标”,即 [行键, 列族, 列限定符, 时间戳]

在这里插入图片描述

2.概念视图与物理视图

在这里插入图片描述
在这里插入图片描述

在定义 HBase 表的时候需要提前设置好列族,表中所有的列都需要组织在列族里面。列族一旦确定后,就不能轻易修改,因为它会影响到 HBase 真实的物理存储结构,但是列族中的列限定符及其对应的值可以动态增删。

3.面向列的存储

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.HBase的实现原理

HBase功能组件

HBase的实现包括三个主要的功能组件

  1. 库函数:链接到每个客户端
  2. 一个Master主服务器
  3. 许多个Region服务器
  • 主服务器Master负责管理和维护HBase表的分区信息,维护Region服务器列表,分配Region,负载均衡。
  • Region服务器负责存储和维护分配给自己的Region,处理来自客户端的读写请求
  • 客户端并不是直接从Master主服务器上读取数据,而是在获得Region的存储位置信息后,直接从Region服务器上读取数据
  • 客户端并不依赖Master,而是通过Zookeeper来获得Region位置信息,大多数客户端甚至从来不和Master通信,这种设计方式使得Master负载很小

在这里插入图片描述

Region的定位

目前每个Region最佳大小建议1GB-2GB(2013年以后的硬件配置)

同一个Region不会被分拆到多个Region服务器

每个Region服务器存储10-1000个Region
在这里插入图片描述

  • 元数据表,又名.META.表,存储了Region和Region服务器的映射关系。当HBase表很大时, .META.表也会被分裂成多个Region
  • 根数据表,又名-ROOT-表,记录所有元数据的具体位置
  • -ROOT-表只有唯一一个Region,名字是在程序中被写死的
  • Zookeeper文件记录了-ROOT-表的位置
    在这里插入图片描述
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值