Skip to content

P7

简述HBase的数据模型

  • HBase的数据模型是一个稀疏、多维度、排序的映射表,这张表的索引是行键、列族、列限定符和时间戳
  • 所有数据都以字符串进行存储,用户需要自行进行数据类型的转换
  • 每一行都有一个可排序的行键和任意多的列
  • 表由一个或多个列族组成,一个列族可以包含很多个。列族支持动态扩展,不需要预定义数量及类型,同一列族的数据存储在一起。
  • 行键、列族、列限定符可以确定一个单元格,单元格内有数据的不同版本(HBase执行更新操作时不删除,只生成新的),再使用时间戳进行索引
  • image-20231123133925382
  • 即通过四元组获取数据 [行键, 列族, 列限定符, 时间戳]
  • 行主键:检索记录的主键
    • 可以访问单行或进行范围访问
    • 存储时根据行键进行排序
  • 列族:
    • 列族需要在表使用前进行定义,修改比较麻烦
    • 访问控制以及在 HDFS 中存储的基本单位
  • 时间戳:每个 cell 都保存着同一份数据的多个版本

简述HBase的概念视图和物理视图的不同

  • 概念视图表述:HBase一定程度上又可以看成一个多维度的Map模型去理解它的数据模型。可以看作一个逐级映射的字典
  • 在概念视图上HBase的结构与传统的关系数据库类似,以行为单位
  • 概念试视图是一种逻辑上的结构

  • 物理视图表述:物理存储格式上按逻辑模型中的行进行分割,并按照列族存储相同列族的项存储在同一个文件)。值为空的列不予存储(处理稀疏表)。因此可以方便的对列族进行处理,并且可以灵活的只对需要的列进行读取,而不需要按行为单位整个处理。

  • 每个列族存储在一个独立文件 IFile 中,在存储文件的内部根据行进行排序,方便根据行键进行快速检索
  • 列式存储适合读取操作多,每次读取列少的情况。
  • image-20231123172818623

  • 区别

  • 概念视图关注于数据的逻辑组织和表结构,而物理视图关注于数据的实际存储、分布式处理和底层架构。
  • 概念视图简化了用户与HBase的交互,而物理视图解释了HBase如何实现高性能和水平扩展。

简述HBase系统基本架构以及每个部分的作用

  • 系统架构
  • image-20231123223516063

  • Master主要负责表和 Region 的管理工作:

  • 表和区域管理:负责表的创建、删除以及区域分裂和合并。管理用户对表的增加、删除、修改、查询等操作
  • 负载均衡:对区域进行负载均衡,将区域分配到不同的 RegionServer。对发生故障失效的 Region 服务器上的 Region 进行迁移

  • RegionServer负责维护分配给自己的 Region(合并、分类等),并响应用户的读写请求

  • ZooKeeper 帮助选举出一个 Master 作为集群的总管,并保证在任何时刻总有唯一一个 Master 在运行,这就避免了 Master 的“单点失效”问题

  • Client:包含访问HBase的接口,同时在缓存中维护着已经访问过的Region位置信息,用来加快后续数据访问过程

简述HBase数据查询定位方法及三层结构中各层次的名称和作用

  • 三层结构:
  • HBase 使用三层类似 B+树的结构来保存 Region 位置
  • Zookeeper文件:记录了-ROOT-表的位置信息
  • -ROOT-表:记录了.META.表的Region位置信息。通过-ROOT-表,就可以访问.META.表中的数据
  • .META.表:记录了用户数据表的Region位置信息,.META.表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息
  • image-20231123231111940

  • 数据查询定位方法

  • 访问Zookeeper:首先访问Zookeeper获取-ROOT-表的位置信息。
  • 查询-ROOT-表:查询-ROOT-表找到.META.表的Region位置信息。
  • 访问.META.表:查询.META.表得到目标用户数据表的Region位置信息。
  • 定位Region:根据.META.表提供的信息,HBase可以定位到包含所需数据的具体Region,并将查询请求发送到负责该Region的RegionServer。
  • RegionServer处理:RegionServer接收查询请求后,检索相应的Region,并返回查询结果。