MST
星途 面试题库

面试题:Hbase中HBase复制原理如何在常规场景下保障数据一致性

请阐述HBase复制原理在日常数据读写场景中,是怎样确保不同RegionServer之间的数据一致性的,比如涉及到主从复制模式下,数据更新的传播流程是怎样的?
35.0万 热度难度
数据库Hbase

知识考点

AI 面试

面试题答案

一键面试

HBase复制原理确保数据一致性及数据更新传播流程

  1. 数据一致性确保机制
    • WAL(Write - Ahead Log):HBase中每个RegionServer都有WAL。在数据写入时,首先会写入WAL,这是一种预写式日志机制。这样做的目的是保证即使系统崩溃,也能通过重放WAL中的记录恢复未完成的操作,确保数据不会丢失。当进行复制时,主RegionServer在写入本地数据的同时,也会将写入操作记录在WAL中,这些记录随后会被用于传播到从RegionServer,保证主从数据的一致性。
    • HLog(HBase Log):WAL以HLog的形式存储在HDFS上。HLog按时间顺序记录了所有对HBase数据的修改操作。每个RegionServer都维护自己的HLog,在主从复制模式下,主RegionServer的HLog会作为数据复制的源头,从RegionServer通过读取主RegionServer的HLog来获取更新操作,从而保持数据一致。
    • Region Split与合并的一致性处理:当Region发生split(分裂)或merge(合并)时,HBase通过协调机制保证主从RegionServer之间操作的一致性。例如,在split时,主RegionServer会将split操作记录在HLog中,从RegionServer会从HLog中获取该操作并在本地执行相同的split,确保主从数据结构一致。
  2. 主从复制模式下数据更新传播流程
    • 主RegionServer写入:客户端发起数据写入请求到主RegionServer。主RegionServer接收到请求后,先将写入操作写入本地的WAL(HLog),然后将数据写入MemStore(内存存储区域)。
    • HLog复制:主RegionServer的HLog会被复制到从RegionServer。这通常通过HDFS的机制实现,从RegionServer可以从HDFS上读取主RegionServer的HLog。
    • 从RegionServer重放:从RegionServer读取主RegionServer的HLog后,按照记录的顺序重放写入操作。它会先将操作写入自己的WAL,然后再写入本地的MemStore。
    • Flush操作:当主从RegionServer的MemStore达到一定阈值(例如,默认64MB)时,会触发Flush操作,将MemStore中的数据写入磁盘形成StoreFile。由于主从都基于相同的写入操作,最终生成的StoreFile在数据内容上是一致的,从而保证了不同RegionServer之间的数据一致性。