1

分散環境で毎日 50Gb のログを保存するのに問題があります。Hadoop HDFS を調べましたが、Windows インフラストラクチャでの実行に問題があり、多言語ファイルシステム API が不足しているため、私にはあまり適していません。一方、Cassandra は、どのプラットフォームにも簡単にデプロイできます。私が直面している唯一の大きな問題は、ディスク容量の使用です。数値は次のとおりです。

  • 元のログ サイズは 224Mb です
  • Cassandra データ ファイルは 557Mb です
  • Cassandra インデックス ファイルは 109Mb です

そのため、ログ ファイルからログ行を保存するときに、ほぼ 2 倍のオーバーヘッドが発生しました。

非常に単純なシナリオで大量のディスク容量を消費しないように、何らかの方法で Cassandra を調整することは可能ですか?

4

1 に答える 1

3

列ファミリー内の1行(4列)を意味していると思いますか?各列に関連付けられている「オーバーヘッド」は、長い(タイムスタンプ、64ビット)およびbyte [](列名、最大64 kb)です。したがって、4倍のディスク使用量は少し奇妙に思えます。削除を行っていますか?分散された結果整合性のあるシステムで削除がどのように行われるかを必ず理解してください。

「圧縮」についても必ずお読みください。(「圧縮が完了すると、古いSSTableファイルが削除される可能性があります」)

また、ストリーミングの実行方法に関するThriftの制限についてもお知らせします。

CassandraのパブリックAPIはThriftに基づいており、ストリーミング機能を提供していません。書き込まれた値またはフェッチされた値はすべてメモリに収まる必要があります。これはThriftの設計に固有のものであるため、変更される可能性はほとんどありません。したがって、Cassandraにラージオブジェクトのサポートを追加するには、ラージオブジェクトを手動で分割する特別なAPIが必要になります。考えられるアプローチについては、 http://issues.apache.org/jira/browse/CASSANDRA-265で説明されています。当面の回避策として、ファイルを手動で任意のサイズのチャンクに分割し(少なくとも1人は64MBを使用しています)、チャンクを列の値としてファイルを行に対応させることができます。(wikiの「CassandraLimitations」ページから)

于 2010-06-28T20:38:42.387 に答える