MST

星途 面试题库

面试题:HBase中Log Edit生命周期涉及哪些关键阶段及相关操作

请详细阐述HBase中Log Edit从生成到最终处理完成,其生命周期所经历的关键阶段,以及在每个阶段通常会涉及到的具体操作。
16.8万 热度难度
数据库Hbase

知识考点

AI 面试

面试题答案

一键面试

生成阶段

  • 操作:当客户端对HBase进行写操作(Put、Delete等)时,首先会在MemStore中记录数据变更,同时生成对应的Log Edit。Log Edit记录了操作的详细信息,如RowKey、ColumnFamily、Qualifier、时间戳以及具体的操作类型和数据等。这些Log Edit会被批量写入到HLog(HBase的预写式日志)中,以确保数据的持久性。

写入HLog阶段

  • 操作:HLog以顺序写的方式将Log Edit写入磁盘。每个RegionServer都维护着自己的HLog,HLog采用了分段存储的策略,当一个HLog文件达到一定大小后,会滚动生成新的HLog文件。写入过程中,为了保证数据的一致性和持久性,会使用文件同步(fsync)操作将数据从操作系统缓存刷写到磁盘。

RegionServer故障时的恢复阶段

  • 操作:如果某个RegionServer发生故障,其他RegionServer在检测到故障后,会触发故障恢复流程。此时,系统会根据HLog中的Log Edit进行数据恢复。首先,会确定故障RegionServer所对应的HLog文件,然后从这些HLog文件中读取Log Edit。根据Log Edit中的信息,将未持久化到StoreFile的数据重新应用到MemStore中,使得数据状态恢复到故障前的状态。

合并与清理阶段

  • 操作:随着MemStore不断写入数据,当达到一定阈值时,会触发Flush操作,将MemStore中的数据写入到StoreFile中。此时,对应的Log Edit已经完成了确保数据持久化的使命。HBase会定期对HLog文件进行合并和清理操作。合并操作会将多个小的HLog文件合并成一个大的HLog文件,以减少文件数量和提高读写性能。清理操作会删除那些已经不再需要的HLog文件,例如其中的Log Edit所对应的MemStore数据已经全部Flush到StoreFile并且相关的RegionServer状态稳定。