面试题答案
一键面试主要类型及基本原理
- SizeTieredCompaction
- 基本原理:按照文件大小分层,小文件会优先合并。HBase 会将存储文件按大小划分到不同的层级(tiers),较小层级的文件达到一定数量或大小阈值时,会触发合并操作,将这些小文件合并成更大的文件,并移动到更高层级。这样做的目的是减少文件数量,提高读取性能,因为读取时需要扫描的文件数量减少了。
- LeveledCompaction
- 基本原理:在这种策略下,数据文件被组织成多个级别(levels)。写入操作首先将数据写入到较高级别(通常是 Level 0),当 Level 0 中的文件数量达到一定阈值时,会触发合并操作,将部分文件合并到 Level 1。Level 1 及以下级别的文件在写入时会尽量避免数据重叠,通过这种方式减少合并时的数据重复处理,提高整体性能。LeveledCompaction 适合写入量较大且读操作延迟要求不高的场景,因为它在写入时的性能相对较好,不过读操作可能需要扫描多个级别文件。
- SteppingStoneCompaction
- 基本原理:结合了 SizeTieredCompaction 和 LeveledCompaction 的特点。从 Level 0 开始,当 Level 0 达到一定条件时,会将部分文件合并到下一级别,类似 LeveledCompaction 的操作。但在较低级别(如 Level 1 及以下),又按照文件大小分层,像 SizeTieredCompaction 那样处理,即小文件优先合并。这种策略试图在写入性能和读取性能之间找到一个更好的平衡点,适用于对读写性能都有一定要求的场景。