HBase的blockcache策略

cache策略已经被研究的很多了,其基本概念见

Wikipedia Cache

HBase里面将cache分为三类:

1. InMemory:希望其内容能够常驻memory

2. Single:被访问一次的block放入这里

3. Multi:被访问不止一次的block放入这里

InMemory容易理解,在系统中的一些meta数据会被经常的访问到,同时size又比较小,让其能够常驻内存而不因为内存size的限制而被替换掉是非常合理的想法。

Single和Multi的出现是为了避免scan的影响,试想如果cache的size配置为100M,而一次scan的数据大小为200M,则所有cache中的数据都将被remvoed,但是fill进cache的block却永不会被访问第二遍(scan的语义),这是多么的浪费。

以上想法的核心思想是将cache分级,而不是大家都呆在一层cache里面互相影响,有篇文章总结了这种想法(思想不完全相同):

LIRS: Low Inter-reference Recency Set Replacement for VM and Buffer Caches...

你可能感兴趣的:(cache)