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的稳定运行和高效管理都起到了至关重要的作用。

相关推荐
tatasix40 分钟前
MySQL UPDATE语句执行链路解析
数据库·mysql
ifanatic1 小时前
[面试]-golang基础面试题总结
面试·职场和发展·golang
南城花随雪。1 小时前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了1 小时前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度1 小时前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮1 小时前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
程序猿进阶2 小时前
堆外内存泄露排查经历
java·jvm·后端·面试·性能优化·oom·内存泄露
gma9992 小时前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️2 小时前
华为ASP与CSP是什么?
服务器·前端·数据库
Yz98763 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发