gpt4 book ai didi

hbase - 在 Hbase 中为大型扫描禁用 block 缓存

转载 作者:行者123 更新时间:2023-12-02 06:34:32 31 4
gpt4 key购买 nike

我一直在阅读有关我应该在 Hbase 中禁用 block 缓存以进行大型扫描的内容。我认为这是因为您在大型扫描中获得了更好的性能,因为您不使用 GC 并节省了加载 block 缓存所花费的时间,但我阅读了基准测试,其中人们获得了大致相同的性能。

我认为如果不使用blockcache,我应该争取时间,因为GC 不必执行得那么频繁。我也从 Cloudera 找到了一个关于此的问题,我真的不喜欢测试问题的任何可能回答,我想这应该是事实。那么,如果禁用 block 缓存,大型(全表)扫描的性能会更好吗?是什么原因?

最佳答案

Hbase有两种缓存结构

  1. 内存库
  2. block 缓存

内存库

用于写入。HBase 使用 memStore 缓冲值,然后将它们作为新的存储文件写入磁盘。

block 缓存

用于读取。每个 HBase 区域服务器都有一个 block 缓存,可以有效地保留最近访问过的内容用于后续读取连续信息的数据。


当 HBase 读取整个数据 block 以实现高效的 I/O 使用时,它会保留这些 block 在 block 缓存中,以便后续读取不需要任何磁盘操作。

如果您正在扫描启用了 block 缓存的大表,则数据会缓存在内存中。由于整个表无法放入缓存,GC 将频繁执行,这可能会降低性能。

如果您不打算一次又一次地读取相同的数据,那么缓存它是没有用的。在这种情况下启用 block 缓存只会降低性能

  • 每次读取都会检查缓存中的数据并进行磁盘I/O,并将数据缓存(不会再次使用)
  • 当 block 缓存已满时,必须进行清理。

这会增加内存和 CPU 的使用,从而降低性能。

当相同的数据被频繁读取时,Block Cache 可以提高性能。它对大表扫描没有帮助。

关于hbase - 在 Hbase 中为大型扫描禁用 block 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22973498/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com