面试题答案
一键面试HFile基本结构
- 文件头(FileInfo):包含了一些元数据信息,如HFile的版本号、数据块的压缩算法、是否有布隆过滤器等信息。
- 数据块(Data Block):存放实际的KeyValue数据。这些数据块会按照一定的大小(如64KB)进行划分。数据块内的KeyValue对通常是有序存储的,按照RowKey的字典序排列。
- 索引块(Meta Block):其中包含了Data Block Index,它记录了每个Data Block的起始位置和RowKey范围等信息,用于快速定位数据块。另外还可能有Bloom Filter等Meta Block,Bloom Filter用于快速判断某个Key是否存在于HFile中,减少不必要的数据块读取。
- 文件尾(Trailer):存储了文件头、数据块索引、Meta Block等的偏移量信息,通过文件尾可以快速定位到文件中的各个关键部分。
过滤淘汰HFile自动化算法中重点考虑的关键属性
- 文件大小:较大的HFile可能包含较多过期或无用数据,在空间紧张时,大文件可能优先被考虑淘汰。
- 数据的时间戳:HBase中数据是多版本的,较旧版本的数据可能不再被需要。如果HFile中大部分数据版本较旧,在过滤淘汰时会被重点考虑。
- 访问频率:长时间未被访问的HFile,说明其存储的数据可能不是热点数据,在自动化淘汰算法中可能被优先处理。