1

私は HBase クラスターへの書き込みに取り組んでいました。データが存在しない場合にのみ書き込む必要があるため、checkAndPut(). しかし、に比べると性能は劣りput(List<Put>)ます。2 つの操作を組み合わせる方法はありますか? 私は周りを見回そうとしましたが、何も見つかりませんでした。

4

1 に答える 1

6

使用するときはcheckAndPut()、リクエストごとに 1 つの RPC 呼び出しを行います。そのため、1 秒あたりのリクエスト数を超えるパフォーマンスを達成することはできません1 / rtt(rtt はラウンド トリップ タイムです)。クライアントとリージョン サーバー間の rtt が 1 ミリ秒の場合、理論上の最大値は 1000 rps です。バッチ操作を使用put(List<Put>)する場合、必要な RPC 呼び出しが大幅に少なくなり、パフォーマンスが向上します。問題解決の方法は 2 つあります。

  1. ワーカーのプールを使用してリクエストを並列化します。HTablePoolワーカーで接続を管理するための便利なクラスが見つかる場合があります。

  2. 操作ステータス (新しいセルが挿入されているか、古いセルが残っているか) を知る必要がない場合は、セルが存在する場合に put 要求を黙ってドロップするコプロセッサを作成してみてください。この場合、一部のセルを置き換える必要がある場合は、まずそれを削除する必要があります。

于 2012-11-29T12:24:49.833 に答える