1

我正在写 HBase 集群。我只有在数据不存在时才写,因此我使用checkAndPut(). 但与 相比,性能较差put(List<Put>)。有什么办法可以将这两个操作结合起来吗?我试图环顾四周,但什么也找不到。

4

1 回答 1

6

使用时checkAndPut(),每个请求执行一次 RPC 调用。因此,您无法获得超过1 / rtt每秒请求数的性能(rtt 是往返时间)。如果您的客户端和区域服务器之间有 rtt 1ms,那么您的理论最大值为 1000 rps。当使用批处理操作时,put(List<Put>)您需要更少的 RPC 调用,从而提高性能。我看到了两种解决问题的方法:

  1. 使用工作池并行请求。您可能会发现HTablePool用于管理工作人员中的连接的有用类。

  2. 如果您不需要了解操作状态(插入新单元或保留旧单元),您可以尝试编写协处理器,在单元存在的情况下静默丢弃 put 请求。在这种情况下,如果您需要替换某个单元格,您必须先将其删除。

于 2012-11-29T12:24:49.833 回答