簡単に言うと、5 Tbのデータがあり、これを5 cassandraサーバーにデプロイする場合-各マシンにはデータ用に5Tbのディスクスペースが必要ですか(ログスペースは含まれません)? docs時々cassandraは2倍のデータサイズが必要になるように聞こえます-つまり、アレイ内のサーバーあたり10Tbまたは合計10Tbですか?
各マシンにはどのくらいのRAMが必要ですか?5Tbがすべて同じ列スペースにあると仮定します。各マシンでRAMしかし、それで十分かどうかはわかりません。合計5TbのRAMを搭載したサーバーのアレイが必要ですか?
5台のサーバーに5 TBのデータを均等に分散すると、各サーバーは1台のデータをホストしますTB。圧縮の必要性があるため、各サーバーには2 TBのディスク容量(最悪の場合、圧縮にはデータの2倍の容量がディスク上に必要です)、つまり10 TBあなたのクラスター。
上記のケースは、クラスター内でデータのレプリカを1つだけ保存する場合です。この場合、サーバーに障害が発生すると、データの5分の1に到達できなくなります。データのレプリカを2つクラスターに保存する場合、各ノードには4 TBのディスク容量が必要です。つまり、クラスター内の合計は20 TB 。
すべてのデータがRAMにあるとすると、それは巨大で高価なマシンです。幸い、ほとんどのアプリケーションでは、すべてのデータをメモリに保持する必要はなく、ライブ/アクティブデータのみを保持する必要があります。
Cassandraは、エントリがメモリから欠落している場合、HDからRAMにデータを自動的に取得できます。逆に、アクセスされていないレコードがメモリから排出された場合(「コールド」データ)。比較できます。 Cassandraアプリケーションレベルのキャッシュとして、エントリはアカウント行です。この場合のキャッシュのヒット/ミスは、cassandraファイルシステムディスク上のレコードとして解釈できます。メモリに戻されます。
したがって、サイジングの観点から:
つまり、RAMについて言えば、ディスクからの不要な再フェッチを回避するために必要なのは、メモリに十分なデータを保持することだけです。それは非常にアプリケーションに依存します。ベンチマークを実行して、システムに保存されているセッションの総数に対して、1日に取得するアクティブなセッションの数を確認することをお勧めします。これは、システムが読み取り優位であり、読み取りが一時的な局所性を示す場合に適しています。
さらにインスピレーションを得るためにこのスレッドもチェックしてください https://stackoverflow.com/questions/4924978/cache-design-question
ライブデータと合計データのこの比率によって、システムのRAM要件が決まります。基本的に、これはcassandraミスvs RAMコスト。同様の考慮事項(異なるレベル)がcpuキャッシュ設計に適用されます。
cassandraパフォーマンスのためにノードあたりの推奨ディスク容量は1/2テラバイトであるため、非常に長い圧縮と非常に長いマップ/リデュース時間を待ちたい場合を除いて、必要なマシンの数を再考する必要があります。