HBase数据库面试知识点:第二部分 - 核心技术(持续更新中)

目录

[1. 分布式存储与HDFS](#1. 分布式存储与HDFS)

[2. 面向列的存储](#2. 面向列的存储)

[3. 数据版本控制](#3. 数据版本控制)

[4. Region与RegionServer](#4. Region与RegionServer)

[5. 分布式协调服务(ZooKeeper)](#5. 分布式协调服务(ZooKeeper))


1. 分布式存储与HDFS

HBase利用Hadoop的HDFS作为其底层存储系统,确保数据的高可靠性和可扩展性。

  • 数据块(Block):在HDFS中,数据被分割成**大小固定(默认为128MB)的数据块,这些数据块被存储在集群的多个节点上。通过数据块的冗余存储(通常为三个副本),**HDFS提供了数据容错能力,即使某个节点故障,也能从其他节点恢复数据。

  • NameNode与DataNode:HDFS中,**NameNode是集群中的主节点,**负责管理文件系统的元数据,如文件名、目录结构、数据块位置等。**DataNode则是从节点,**负责存储实际的数据块,并根据NameNode的指令进行数据的读写操作。NameNode通过心跳机制与DataNode保持通信,确保集群的健康状态。

  • HBase与HDFS的集成:在HBase中,**每个表都映射到HDFS上的一个目录。**表中的数据被水平划分为多个Region,**每个Region对应HDFS中的一个或多个文件。**当HBase进行数据读写时,**会首先通过ZooKeeper定位到相应的RegionServer,再由RegionServer与HDFS的NameNode和DataNode进行交互,**完成数据的读写操作。

2. 面向列的存储

HBase的面向列存储模型允许其高效地处理稀疏数据和大规模数据集。

  • 列族(ColumnFamily):在HBase中,数据按照列族进行组织。**列族是表的一个逻辑分组,可以包含多个列。****每个列族在物理存储上是分开的,**这样可以减少不必要的I/O操作,提高查询效率。

  • 列(Column):**列由列族和列限定符(Column Qualifier)组成。****列限定符是列的具体名称,**用于标识列族中的不同字段。每个列都可以有一个或多个版本,每个版本都有一个与之关联的时间戳。

  • 单元格(Cell):单元格是HBase中数据的**基本单位,****由行键、列族、列限定符、时间戳和数据值组成。****数据值以字节数组的形式存储,可以是任意类型的数据。**这种灵活的存储方式使得HBase能够处理各种类型的数据。

3. 数据版本控制

HBase通过时间戳机制实现数据的版本控制。

  • 时间戳:在HBase中,**每个单元格都有一个与之关联的时间戳,用于标识数据的版本。**时间戳可以是系统自动生成的(如当前时间戳),也可以是用户指定的。当数据被更新或删除时,HBase会生成一个新的版本,并将其存储在HDFS中。

  • 版本管理:**HBase提供了API来查询和管理数据的版本。**用户可以通过指定时间戳范围来检索特定版本的数据,也可以通过设置保留数据的版本数量来限制存储空间的使用。这种机制使得HBase能够处理数据的更新和删除操作,并提供了数据的恢复能力。

4. Region与RegionServer

HBase通过Region和RegionServer的概念实现数据的水平扩展和负载均衡。

  • Region:**Region是HBase中数据表在物理存储上的划分单元。**每个Region包含一部分行数据,并且有一个起始行键和一个结束行键来定义其范围。当Region的大小超过阈值或Region所在的RegionServer出现故障时,HBase会自动进行Region的分裂和迁移。

  • RegionServer:**RegionServer是HBase中的工作节点,负责管理和维护一个或多个Region的数据。****它负责处理客户端的读写请求,将数据写入HDFS,并从HDFS中读取数据返回给客户端。RegionServer还负责与其他RegionServer进行通信,**以协调数据的分裂、迁移和合并等操作。这种分布式的处理方式使得HBase能够处理大规模数据集并提供高性能的读写操作。

5. 分布式协调服务(ZooKeeper)

ZooKeeper在HBase中扮演着关键角色,用于实现集群的协调和管理。

  • 集群状态管理ZooKeeper维护了HBase集群的状态信息,如Region的位置、节点的状态等。当集群中的节点发生变化时(如节点加入、离开或故障),ZooKeeper会实时更新集群的状态信息,并将更新通知给其他节点。这种机制使得HBase能够在集群规模动态变化的情况下保持高效运行。

  • 分布式锁:**HBase在数据写入和元数据更新等关键操作中使用了ZooKeeper提供的分布式锁机制。这种机制保证了数据的一致性和操作的原子性,**避免了并发操作导致的数据冲突和不一致问题。例如,在Region的分裂和迁移过程中,ZooKeeper的分布式锁机制可以确保只有一个RegionServer同时处理同一个Region的分裂或迁移操作。

此外,ZooKeeper还提供了其他功能,如命名服务、配置管理、分布式同步等,这些功能对于HBase的稳定运行和高效管理都起到了至关重要的作用。

相关推荐
CopyLower26 分钟前
MySQL 5.7 之后的特性解析:从 8.0 到 8.4 的技术进化
数据库·mysql
枫夜求索阁1 小时前
大模型文件类型揭秘:从基础到面试挑战
人工智能·面试·职场和发展·大模型
chat2tomorrow1 小时前
数据中台建设系列(五):SQL2API驱动的数据共享与服务化实践
大数据·数据库·数据仓库·sql·数据治理·数据中台·sql2api
极小狐1 小时前
如何使用极狐GitLab 软件包仓库功能托管 helm chart?
java·linux·服务器·数据库·c#·gitlab·maven
JavaAlpha2 小时前
高频面试题:设计秒杀系统,用Redis+Lua解决超卖
数据库·redis·lua
努力的小帅2 小时前
c++——二叉树进阶
开发语言·数据结构·c++·学习·算法·面试
向上的车轮2 小时前
什么是向量数据库?向量数据库和关系数据库有什么区别?
数据库·向量数据库
boring_1113 小时前
异地多活单元化架构下的微服务体系
数据库·微服务·架构
betazhou3 小时前
oracle goldengate非并行进程转换为并行进程
数据库·oracle·并行·parallel·ogg·同步数据
wuli玉shell3 小时前
数仓-范式建模、维度建模、雪花模型、星型模型对比及其适用范围
数据库·oracle