面试题答案
一键面试常规方法与机制
- WAL(Write-Ahead Log):
- 每个Region Server都有一个预写式日志。在将数据写入MemStore之前,先将写操作记录到WAL中。如果Region Server发生故障,重启后可以根据WAL中的记录进行数据恢复,确保数据不会丢失,从而保证写入数据源与数据流向的一致性。
- MemStore:
- 数据先写入MemStore,MemStore是内存中的存储结构。当MemStore达到一定阈值(如默认的128MB)时,会触发Flush操作,将数据持久化到HFile(存储在HDFS上)。这种先在内存中缓存数据,再批量写入磁盘的方式,减少了磁盘I/O次数,同时保证了数据的顺序写入,有助于维持数据一致性。
- HDFS的多副本机制:
- HBase底层依赖HDFS存储数据。HDFS会为每个数据块创建多个副本(默认3个),并将副本分布在不同的DataNode上。这样即使某个DataNode出现故障,数据仍然可用,保证了数据的持久性和一致性。
面对多个Region Server同时写入时保证数据一致性的方法
- ZooKeeper协调:
- ZooKeeper用于管理HBase集群的元数据,包括Region的分配等。它可以确保每个Region只会被一个Region Server服务,避免多个Region Server同时对同一个Region进行写入操作,从而保证数据一致性。
- Row Locking(行锁):
- HBase通过行锁来保证同一行数据的一致性。当一个Region Server对某一行进行写入时,会获取该行的锁,其他Region Server在锁释放前无法对该行进行写入操作。这种机制保证了同一行数据在并发写入时的一致性。
- Region Server间的同步:
- 当一个Region Server写入数据后,通过HDFS的副本机制,其他Region Server可以获取到最新的数据副本。并且HBase通过心跳机制,让Region Server之间保持通信,确保各个Region Server对数据状态的认知是一致的。