6

NoSQL と Cassandra は初めてです。メモリ内キャッシュのみのソリューションを実現するための設定を試しています。100000 行のファイルから 1 行ずつ読み取り、Hector を使用して Cassandra に挿入することで処理しています。毎秒約 6000 回の挿入という非常に低いスループットに気付きました。書き込み操作全体で約 20.5 秒かかりますが、これは私たちのアプリケーションでは受け入れられません。1 秒あたり 100000 回の挿入が必要です。4GB RAM を搭載した Windows 7 コンピューターでテストしています。

挿入のみのテストを行っています。

どこが間違っているのか教えてください。1 秒あたりの挿入数を改善する方法を教えてください。

Keyspace: Keyspace1
        Read Count: 0
        Read Latency: NaN ms.
        Write Count: 177042
        Write Latency: 0.003106884242157228 ms.
        Pending Tasks: 0
                Column Family: user
                SSTable count: 3
                Space used (live): 17691
                Space used (total): 17691
                Number of Keys (estimate): 384
                Memtable Columns Count: 100000
                Memtable Data Size: 96082090
                Memtable Switch Count: 1
                Read Count: 0
                Read Latency: NaN ms.
                Write Count: 177042
                Write Latency: NaN ms.
                Pending Tasks: 0
                Key cache capacity: 150000
                Key cache size: 0
                Key cache hit rate: NaN
                Row cache capacity: 150000
                Row cache size: 0
                Row cache hit rate: NaN
                Compacted row minimum size: 73
                Compacted row maximum size: 924
                Compacted row mean size: 784

行キャッシュとキー キャッシュを設定する方法をいくつか試しました。

  1. Cassandra CLI 経由

  2. NodeCmd 経由: java org.apache.cassandra.tools.NodeCmd -p 7199 setcachecapacity Keyspace1 user 150000 150000

4

2 に答える 2

9

1 秒あたり 6000 回の書き込みを「遅い」とは言いませんが、Cassandra の方がはるかに優れています。ただし、Cassandra は永続的な書き込み用に設計されているため、メモリのみのキャッシュ ソリューションよりもパフォーマンスが低下する可能性があることに注意してください。

sbridges が言うように、単一のクライアントを使用して Cassandra から完全なパフォーマンスを引き出すことはできません。複数のクライアント スレッド、プロセス、またはマシンを使用してみてください。

1 つのノードで 1 秒あたり 100,000 回の書き込みができるとは思いません。控えめなハードウェアで 1 秒あたり約 20,000 ~ 25,000 回の書き込みしか得られませんでした (ただし、ベンチマークを行ってから Cassandra は大幅に高速になりました)。単一のコモディティ ノードに対する単一のクライアントには、1 秒あたり 6000 が適切と思われます。

ノードのクラスターを使用すると、間違いなく毎秒 100,000 を達成できます (毎秒 1,000,000 書き込みの最近のベンチマークについては、http://techblog.netflix.com/2011/11/benchmarking-cassandra-scalability-on.htmlを参照してください!)

行キャッシュとキー キャッシュは、書き込みパフォーマンスではなく、読み取りパフォーマンスを向上させるためのものです。

また、(適切な場合) 書き込みをバッチ処理していることを確認してください。これにより、ネットワークのオーバーヘッドが削減されます。

于 2011-12-06T21:54:59.673 に答える
8

挿入を実行するためにいくつのスレッド/プロセスを使用していますか? Hector 呼び出しは同期的であるため、クライアント側で 1 つのスレッドしか使用していない場合、それがボトルネックになる可能性があります。

于 2011-12-06T16:34:41.297 に答える