使用 HBase 改进 HBase 数据访问性能 API

HBase Data Access performance improvement using HBase API

我正在尝试使用 HBase table 中的前缀过滤器扫描一些行。我在 HBase 0.96 上。

我想增加每个 RPC 调用的吞吐量,以减少到达该区域的请求数。

我在扫描对象上尝试了 getCaching(int) 和 setCacheBlocks(true)。我还尝试添加 resultScanner.next(int)。使用所有这些组合我仍然无法减少 RPC 调用的数量。我仍然为每个密钥访问 HBase 区域,而不是为每个 RPC 调用带来多个密钥。

HBase 区域服务器/Datanode 有足够的 CPU 和分配的内存。我的数据也均匀分​​布在不同的区域服务器上。此外,我每个键带回的数据并不多。

我观察到,当我向 table 添加更多数据时,请求所花费的时间会增加。当请求数量增加时它也会增加。

感谢您的帮助。

R

前缀过滤器通常是性能杀手,因为它们执行完整 table 扫描,在扫描中始终使用开始和停止行而不是前缀过滤器。

Scan scan = new Scan(Bytes.toBytes("prefix"),Bytes.toBytes("prefix~"));

ResultScanner遍历Result时,每次迭代都是一次RPC调用,可以调用resultScanner.next(n)一次性得到一批结果