1

私が Cassandra についてほとんど理解していないことから、データの局所性は、ノードにアクセスするクライアント アプリケーションに対してほとんど透過的であるように思われます。

しかし、接続しているノードに対してローカルな列ファミリーのデータのみに明示的にアクセスしたい場合はどうすればよいでしょうか? そのようなことは可能ですか?すぐに使用できるクライアント API からこれを取得する方法は見つかりませんでしたが、システム テーブルを介してこの情報の一部を取得できたようですが、これを行う方法がよくわかりません。 .

アイデアは mapreduce を実行することですが、Hadoop は使用しません。ローカル クライアントは、ローカルの cassandra ノードに接続し、ローカル データの集計を実行してから、上流に戻します。

そのようなことはまったく可能ですか?Hadoop が Cassandra を使用できるという証拠を見たので、一見可能のように見えますが、例は一般的なクライアントではなく Hadoop を対象としているようです。ローカル クライアント (Casandra との会話) は Java になります。現在 Hector を使用していますが、データの局所性情報が提供されるかどうかはわかりません。

4

1 に答える 1

2

Netflix Techblogの最近の記事で Aegisthus が紹介されています。これは、ディスクに保存されている SSTable をクラスター全体で読み取り、それらを (MapReduce で) 単一の一貫したデータ ビューにマージするプロジェクトです。その場合、単一ノードでデータのビューを生成するためのメカニズムが自明に存在すると想像できます。

残念ながら、彼らはまだこのツールをオープンソース化していないと思いますので、あなたはそれを使うことができません. この時点で可能なことは、Cassandra 以外のコードを使用して SSTable をネイティブに読み取ることができるということです。

SSTables を読み取る Cassandra ソースを使用して何かを一緒にハックし、それを構築したいローカル クライアントに供給することができるかもしれません。優れた出発点は、ツールorg.apache.cassandra.tools.SSTableExportで使用されているソースを調べることです。sstable2json

于 2012-03-29T07:57:57.923 に答える