面试题答案
一键面试默认BlockCache
- 缓存原理:
- HBase默认的BlockCache采用的是LRU(Least Recently Used)策略。当数据块(Block)被读取时,如果BlockCache还有空间,该数据块就会被放入缓存。
- 缓存空间以固定大小的块为单位进行管理。一旦缓存达到其容量上限,当有新的数据块需要缓存时,LRU策略会选择最久未使用的数据块将其从缓存中移除,为新数据块腾出空间。
- 提升读取性能方式:
- 对于频繁访问的数据,由于它们会不断被使用,从而一直保持在缓存中。当下次再次请求相同的数据块时,就可以直接从缓存中获取,避免了从磁盘读取数据,大大减少了I/O开销,提高了读取性能。
分级BlockCache
- 缓存原理:
- 分级BlockCache将缓存空间分为多个级别,一般常见的是两级,即L1和L2。
- L1缓存通常采用LRU - K策略(K通常大于1,如LRU - 2),它不仅考虑最近一次访问时间,还会记录数据块的访问次数。只有当数据块被访问了K次后,才会被认为是热点数据。L1缓存主要用于缓存热点数据块,其空间相对较小,但访问速度快。
- L2缓存采用LRU策略,用于缓存相对较冷的数据块。它的空间通常比L1大,能容纳更多数据块。当数据块在L1缓存中经过一定时间未被再次访问,且满足一定条件时,会被移动到L2缓存。
- 提升读取性能方式:
- 通过将热点数据和相对冷的数据分开缓存,能更有效地利用缓存空间。对于热点数据,在L1缓存中可以快速被获取,减少读取延迟。而对于不那么频繁访问的数据,L2缓存提供了一个更大的存储空间,在一定程度上也能减少磁盘I/O。当L1缓存未命中时,再去L2缓存查找,若L2缓存命中,同样避免了磁盘读取,提高了整体的数据访问效率。