私は HBase クラスターへの書き込みに取り組んでいました。データが存在しない場合にのみ書き込む必要があるため、checkAndPut()
. しかし、に比べると性能は劣りput(List<Put>)
ます。2 つの操作を組み合わせる方法はありますか? 私は周りを見回そうとしましたが、何も見つかりませんでした。
質問する
971 次
1 に答える
6
使用するときはcheckAndPut()
、リクエストごとに 1 つの RPC 呼び出しを行います。そのため、1 秒あたりのリクエスト数を超えるパフォーマンスを達成することはできません1 / rtt
(rtt はラウンド トリップ タイムです)。クライアントとリージョン サーバー間の rtt が 1 ミリ秒の場合、理論上の最大値は 1000 rps です。バッチ操作を使用put(List<Put>)
する場合、必要な RPC 呼び出しが大幅に少なくなり、パフォーマンスが向上します。問題解決の方法は 2 つあります。
ワーカーのプールを使用してリクエストを並列化します。
HTablePool
ワーカーで接続を管理するための便利なクラスが見つかる場合があります。操作ステータス (新しいセルが挿入されているか、古いセルが残っているか) を知る必要がない場合は、セルが存在する場合に put 要求を黙ってドロップするコプロセッサを作成してみてください。この場合、一部のセルを置き換える必要がある場合は、まずそれを削除する必要があります。
于 2012-11-29T12:24:49.833 に答える