面试题答案
一键面试- HLog基本概念:HLog(Write Ahead Log)是HBase用于实现数据可靠性的预写式日志。每个RegionServer都有一个HLog实例,所有对该RegionServer上Region的写操作都会先记录到HLog中。
- 崩溃时的情况:当RegionServer崩溃时,内存中尚未持久化到HFile的数据(在MemStore中)可能丢失。此时HLog的作用就凸显出来,它记录了所有未持久化的写操作。
- 数据恢复流程
- 识别HLog文件:Master在检测到RegionServer崩溃后,会找到该RegionServer对应的HLog文件。这些HLog文件存储在HDFS上,具有较高的可靠性。
- 拆分HLog:HLog文件包含了该RegionServer上所有Region的写操作记录。需要将HLog按照Region进行拆分,每个Region对应一部分HLog记录。这是因为不同Region的数据恢复是独立进行的。
- 重放HLog记录:对于每个拆分后的HLog片段,Region会按照记录的顺序重放写操作。例如,重放Put操作会将数据重新写入MemStore,重放Delete操作会标记相应的数据为删除状态。在重放过程中,MemStore会不断接收重放的数据,当MemStore达到一定阈值(比如默认的128MB)时,会触发Flush操作,将数据持久化到HFile中。
通过上述过程,HLog协助HBase在RegionServer崩溃后恢复丢失的数据,保证数据的一致性和可靠性。