HBase BlockCache读缓存和读路径
和其他数据库一样 , 优化IO也是HBase提升性能的不二法宝 , 而提供缓存更是优化的重中之重 。
根据二八法则 , 80%的业务请求都集中在20%的热点数据上 , 因此将这部分数据缓存起就可以极大地提升系统性能 。
一、HBase中缓存结构HBase在实现中提供了两种缓存结构:MemStore和BlockCache 。 其中MemStore称为写缓存 , HBase执行写操作首先会将数据写入MemStore , 并顺序写入HLog , 等满足一定条件后统一将MemStore中数据刷新到磁盘 , 这种设计可以极大地提升HBase的写性能 。 不仅如此 , MemStore对于读性能也至关重要 , 假如没有MemStore , 读取刚写入的数据就需要从文件中通过IO查找 , 这种代价显然是昂贵的!BlockCache称为读缓存 , HBase会将一次文件查找的Block块缓存到Cache中 , 以便后续同一请求或者邻近数据查找请求 , 可以直接从内存中获取 , 避免昂贵的IO操作 。
文章插图
使用 Scan API 扫描的时候 , 建议关闭 BlockCache , Scan 的场景中缓存意义不大 。
HBase 读取数据的时候优先查找 MemStore(最新的更新版本) , 其次会查找 BlockCache 。 首先了解一下 HBase Block 的概念 。
二、HBase Block在 HBase 中 , 存储文件被划分成若干个小存储块 , 默认是64k 。 在 get 或 scan 中一次会完全加载一个 block 到内存中 。 不同于 HDFS Block , HDFS 层面的块是用于拆分大文件以提供分布式存储 , HBase Block 块存在于 HFile 的内部的数据结构 。
文章插图
在建表语句中可以通过参数BlockSize指定:BLOCKSIZE => '65536'
文章插图
三、HBase BlockCache【HBase BlockCache读缓存和读路径】BlockCache是Region Server级别的 , 一个Region Server只有一个Block Cache , 在Region Server启动的时候完成Block Cache的初始化工作 。
文章插图
HBase 提供了几种 BlockCache 方案:
- LruBlockCache
- SlabCache , HBASE-4027 0.92版本提供 , 在1.0版本后被废弃 HBASE-11307
- BucketCache , HBASE-7404 0.95版本提供
- ExternalBlockCache , HBASE-13170 1.10版本提供
文章插图
四、HBase 读路径HBase 读路径为 , 首先检查 MemStore , 然后检查 BlockCache , 最后检索 HFile , 并且合并一条数据的信息(read merge)返回给客户端 。
文章插图
- 一图看懂!数字日照、新型智慧城市这样建(上篇)|政策解读 | 新型
- 发展|大数据解读世界互联网大会·互联网发展论坛!
- 走查|体验走查的道、器、术
- 产品|墨案Inkpad X超级阅读器:10英寸大屏,同品类号称无敌
- 设计|未来创意拒绝被垄断:欧拉共创成果深度解读!
- 用于|用于半监督学习的图随机神经网络
- 快点|有道词典笔3上市,推出超快点查、互动点读两项新功能
- 有道词典笔3正式上市:推出超快点查、互动点读两大创新功能
- 互动|有道词典笔3正式上市:推出超快点查、互动点读两大创新功能
- 内容|网文格局再变?为多进账3个亿,平治与沃悦读合作