regionserver的缓存包含了memestore和blockcache两种,其中memstore用于写缓存(读缓存也包括),blockcache用于读缓存。regionserver给每一个region都分配一个memstore,数据写入的过程中先写入到memstore,当memstore达到设定的阈值后(由hbase.hregion.memstore.flush.size参数控制),会触发flush操作将数据溢写到磁盘,或者达到heapsize *hbase.regionserver.global.memstore.upperLimit * 0.9时,会强行启动flush进程,从最大的memstore开始flush直到低于限制。
而每个regionserver只有一个blockcache,读取数据时,首先到memestore上读数据,找不到再到blockcahce上找数据,再查不到则到磁盘查找,并把读入的数据同时放入blockcache。
blockcache使用的是LRU策略(最近最少使用策略,我觉得应该是LRU-2),当blockcache

HBase的regionserver缓存由Memstore和Blockcache组成,Memstore负责写缓存,数据达到特定阈值后flush至磁盘;Blockcache则作为读缓存,采用LRU策略进行淘汰。Blockcache根据访问频率分为Single、Multi和InMemory三级,优化读响应时间。
最低0.47元/天 解锁文章
3328

被折叠的 条评论
为什么被折叠?



