我正在写 HBase 集群。我只有在数据不存在时才写,因此我使用checkAndPut()
. 但与 相比,性能较差put(List<Put>)
。有什么办法可以将这两个操作结合起来吗?我试图环顾四周,但什么也找不到。
问问题
971 次
1 回答
6
使用时checkAndPut()
,每个请求执行一次 RPC 调用。因此,您无法获得超过1 / rtt
每秒请求数的性能(rtt 是往返时间)。如果您的客户端和区域服务器之间有 rtt 1ms,那么您的理论最大值为 1000 rps。当使用批处理操作时,put(List<Put>)
您需要更少的 RPC 调用,从而提高性能。我看到了两种解决问题的方法:
使用工作池并行请求。您可能会发现
HTablePool
用于管理工作人员中的连接的有用类。如果您不需要了解操作状态(插入新单元或保留旧单元),您可以尝试编写协处理器,在单元存在的情况下静默丢弃 put 请求。在这种情况下,如果您需要替换某个单元格,您必须先将其删除。
于 2012-11-29T12:24:49.833 回答