任何在 HBase 中实现批处理放置和检查和放置的方法



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

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

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

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

最新更新