面试题答案
一键面试HBase中LSM树分层结构主要由以下几层构成:
- MemStore:
- 作用:是位于内存中的数据结构,写入HBase的数据首先会存储在MemStore中。当MemStore达到一定的阈值(比如默认128MB)后,会触发Flush操作,将其中的数据刷写到磁盘上的StoreFile文件中。它起到了数据写入的缓冲作用,减少了直接对磁盘的I/O操作频率,提升写入性能。
- StoreFile:
- 作用:这是磁盘上的文件,由MemStore Flush生成。多个StoreFile可能存在于同一层。它以HFile格式存储数据,数据以键值对形式存储,并且按照Key有序排列。StoreFile中的数据是不可变的,一旦生成不会再修改,新的写入会生成新的StoreFile。
- Compaction(涉及多层StoreFile的操作):
- 作用:由于不断有新的StoreFile生成,会导致文件数量增多,影响查询性能。Compaction操作会将多个较小的StoreFile合并成一个较大的StoreFile。分为Minor Compaction和Major Compaction。Minor Compaction通常选择一些较新、较小的StoreFile进行合并,以减少文件数量;Major Compaction则会合并该列族下的所有StoreFile,进行数据的整理和版本清理等操作,确保数据的一致性和高效查询。