MST

星途 面试题库

面试题:HBase Minibase存储引擎如何在一般场景下保障数据一致性

请阐述HBase Minibase存储引擎在日常读写操作场景中,是通过哪些机制来保障数据一致性的,比如在数据写入和读取时分别有哪些关键步骤确保数据的准确和一致。
45.9万 热度难度
数据库Hbase

知识考点

AI 面试

面试题答案

一键面试

数据写入时保障数据一致性的机制

  1. WAL(Write-Ahead Log)
    • 在将数据写入MemStore之前,HBase会先将写入操作记录到WAL中。这是一种预写式日志机制,即使系统发生故障,在重启时也可以通过重放WAL日志来恢复未持久化的数据,确保数据不会丢失,从而保证了数据一致性。
  2. MemStore
    • 数据写入到MemStore后,MemStore会按Key - Value对的顺序进行排序。这种有序存储方式有助于在数据持久化到磁盘(HFile)时保持数据的一致性和有序性。当MemStore达到一定阈值(默认是128MB)时,会触发Flush操作,将数据持久化到磁盘上的HFile中。
  3. Region Server协调
    • 每个Region Server负责管理多个Region。在写入数据时,Region Server会确保数据在其管理的Region范围内的一致性。例如,对于一个更新操作,Region Server会保证旧数据被新数据正确替换,不会出现部分更新的情况。

数据读取时保障数据一致性的机制

  1. 读请求处理流程
    • 客户端发起读请求,首先会查询MemStore,因为MemStore中保存着最新的未持久化到磁盘的数据。如果在MemStore中找到所需数据,则直接返回,保证读取到最新数据。
    • 如果在MemStore中未找到数据,会接着查询Block Cache。Block Cache缓存了HFile中的数据块,若能在Block Cache中命中,可快速返回数据。由于Block Cache会定期更新,所以能保证读取到相对较新的数据。
    • 若在Block Cache中也未找到,就会从磁盘上的HFile中读取数据。HBase会通过合并操作将MemStore和HFile中的数据进行整合,确保读取到的数据是完整且一致的。
  2. 版本管理
    • HBase支持多版本数据存储,每个Cell(列族:列限定符:时间戳)可以保存多个版本的数据。在读取时,可以根据用户指定的时间戳或者版本号来获取特定版本的数据,保证了数据在不同时间点的一致性读取。
  3. 一致性模型
    • HBase采用的是最终一致性模型。虽然在写入和读取之间可能存在短暂的不一致(例如,写入后立即读取,而此时数据还未从MemStore Flush到HFile),但随着时间推移,通过MemStore的Flush、Compaction等操作,数据最终会达到一致状态。