欢迎投稿

今日深度:

HBase 缓存机制,

HBase 缓存机制,


HBase提供了2种类型的缓存结构:MemStore & BlockCache。
其中MemStore是写缓存,BlockCache是读缓存。

MemStore:HBase写数据首先写入MemStore之中,并同时写入HLog,待满足一定条件后将MemStore中数据刷到磁盘,可以很大提升HBase的写性能。而且对读也很有提升,如果没有MemStore,读取刚写入的数据需要从文件中通过I/O查找。
memstore供写使用,写请求会先写入memstore,regionserver会给每个region提供一个memstore,当memstore满64MB以后,会启动flush刷新到磁盘。当memstore的总大小超过限制时(heapsize * hbase.regionserver.global.memstore.upperLimit * 0.9),会强行启动flush进程,从最大的memstore开始flush直到低于限制。

BlockCache:HBase会将一次文件查找的Block块缓存到Cache中,以便后续同一请求或者相邻数据查找请求,可以直接从内存中获取,避免昂贵的IO操作。一个RegionServer只有一个BlockCache,在RegionServer启动的时候完成BlockCache的初始化,常用的BlockCache包括LruBlockCache,以及 CombinedBlockCache(LruBlockCache + BucketCache)。
blockcache主要提供给读使用。读请求先到memstore中查数据,查不到就到blockcache中查,再查不到就会到磁盘上读,并把读的结果放入blockcache。由于blockcache是一个LRU,因此blockcache达到上限(heapsize * hfile.block.cache.size * 0.85)后,会启动淘汰机制,淘汰掉最老的一批数据。

一个regionserver上有一个blockcache和N个memstore,它们的大小之和不能大于等于heapsize * 0.8,否则hbase不能启动。默认blockcache为0.2,而memstore为0.4。对于注重读响应时间的系统,应该将blockcache设大些,比如设置blockcache=0.4,memstore=0.39,这会加大缓存命中率。

www.htsjk.Com true http://www.htsjk.com/hbase/42404.html NewsArticle HBase 缓存机制, HBase提供了2种类型的缓存结构:MemStore BlockCache。 其中MemStore是写缓存,BlockCache是读缓存。 MemStore:HBase写数据首先写入MemStore之中,并同时写入HLog,待满足一定条件后...
相关文章
    暂无相关文章
评论暂时关闭