1

Cassandra で奇妙な問題が発生しています。私の理解では、Cassandra は挿入に対して拡張可能でした。つまり、2 台のサーバーのクラスターで 1500 回の書き込み/秒を取得していた場合、これを 4 台のサーバーに増やして 1500 回の書き込み/秒に近づけることができます。書き込み/秒がクラスター内のノード数に比例して増加しない可能性があることは理解していますが、現在、ノードを追加しても書き込み/秒の数は増加していません。

私の現在のセットアップは次のようなものです:

20 行のバッチ サイズを使用して、Pycassa でバッチ挿入します。レプリケーション ファクター 2 の永続的な書き込み

一部の ColumnFamilies には通常の列があり、一部には数十万列までの幅の広い列があります。幅の広い列を持つ ColumnFamilies の挿入は、100,000 列の 20 行ではなく、複数のバッチで挿入されます。

Cassandra クラスターは、m1.xlarge と SSD ドライブ (RAID なし) を使用して EC2 でホストされる 2 ノード クラスターであり、コミット ログは sstables と同じドライブにあります。

クラスターを最大 10 ノードまでスケーリングしてみましたが、2 ノードと同じパフォーマンスが得られます。また、データをインポートするインスタンスの数を増やしてみましたが、書き込み操作ごとのレイテンシがはるかに高くなることを除いて、パフォーマンスは同じです。しかし、私が何をしても、書き込みを 1500/s より速くすることはできません。

4

1 に答える 1

3

クライアントが Cassandra を飽和させていないようです。Cassandra が CPU、I/O、またはネットワークにバインドされていない場合、これが問題です。

経験則では、1 つのレプリカで飽和状態になるには、2 つの Cassandra サーバーに対して約 1 つのクライアント マシンが必要です。Java のような「高速な」言語を使用していない場合は、クライアントの数を 5 ~ 10 倍します。Python の場合、GIL が原因で、各マシン内の複数のプロセスを並列化するための努力も必要になります。

TLDR は、数が増えなくなるまでクライアント マシンを追加し続けます。

(また、OpsCenter などで監視することをお勧めします。これにより、ByteOrderedPartitioner の使用や、クラスター全体に要求の負荷が適切に分散されていないなどの問題が浮き彫りになります。)

于 2013-03-25T17:50:53.390 に答える