面试题答案
一键面试- 元数据管理
- HRegionServer故障时的元数据:
- HBase的元数据存储在.META.表中,它记录了每个Region的位置信息。当某个HRegionServer节点发生故障时,Zookeeper会感知到并通知Master。Master通过.META.表能够知道哪些Region受影响。
- 每个Region的元数据包括该Region所对应的HFile集合信息,如HFile的文件名、路径、大小、起始和结束键等。这些元数据在HDFS的文件系统元数据(NameNode管理)和HBase自身的.META.表中都有记录。
- HDFS层面元数据:HFile存储在HDFS上,HDFS的NameNode负责管理文件系统的元数据。NameNode维护着文件到DataNode块的映射关系,对于每个HFile,它知道该文件由哪些数据块组成,以及每个数据块存储在哪些DataNode上。这确保了即使某个DataNode(HBase集群中某个节点故障可能导致对应DataNode不可用)发生故障,NameNode依然能够知晓数据的整体分布情况。
- HRegionServer故障时的元数据:
- 数据恢复机制
- HDFS冗余机制:
- HDFS为每个数据块设置了一定的副本数(默认3个)。当某个存储HFile数据块的DataNode故障时,HDFS会自动检测到副本缺失,并从其他拥有该数据块副本的DataNode上复制数据块,以恢复到设定的副本数。这个过程对HBase透明,HBase在读取HFile数据时,HDFS会确保数据的可用性,即使部分DataNode故障。
- HBase Region重新分配:
- Master在得知HRegionServer故障后,会将故障HRegionServer上承载的Region重新分配到其他可用的HRegionServer上。在重新分配过程中,新的HRegionServer会从HDFS上加载对应的HFile。由于HDFS保证了数据块的冗余和一致性,新的HRegionServer能够获取到完整且可靠的数据。
- 在Region重新分配期间,HBase会对Region进行一致性检查。通过比较HFile中元数据记录的校验和(如CRC校验和)等信息,确保加载的HFile数据的完整性。如果发现数据损坏(尽管HDFS冗余机制大大降低了这种可能性),HBase会尝试从其他副本恢复数据或者标记该数据需要进一步处理(如通过手动干预修复)。
- WAL(Write - Ahead Log)机制:
- HBase在写入数据时,首先会将数据写入WAL(预写日志)。WAL存储在HDFS上,具有高可靠性。当HRegionServer故障时,在重新分配Region后,新的HRegionServer会回放WAL日志,将故障前未持久化到HFile的数据重新写入,从而确保数据的一致性和完整性。WAL日志按时间顺序记录了所有对HBase数据的修改操作,回放过程能够准确恢复到故障前的状态。
- HDFS冗余机制: