1

私は Cassandra を初めて使用し、5 つのノードで Cassandra クラスター (バージョン 1.2.8) を実行しただけで、そこにいくつかのキースペースとテーブルを作成しました。ただし、すべてのデータが 1 つのノードに格納されていることがわかりました (以下の出力では、IP アドレスを手動でノード番号に置き換えています)。

Datacenter: 105
==========
Address         Rack        Status State   Load            Owns                Token
                                                                               4
node-1          155         Up     Normal  249.89 KB       100.00%             0
node-2          155         Up     Normal  265.39 KB       0.00%               1
node-3          155         Up     Normal  262.31 KB       0.00%               2
node-4          155         Up     Normal  98.35 KB        0.00%               3
node-5          155         Up     Normal  113.58 KB       0.00%               4

そして、それらのファイルでは、、、、、、、、をcassandra.yaml除くすべてのデフォルト設定を使用します。以下に、私が変更した非 IP アドレス フィールドを示します。cluster_nameinitial_tokenendpoint_snitchlisten_addressrpc_addressseedsinternode_compression

endpoint_snitch: RackInferringSnitch
rpc_address: 0.0.0.0
seed_provider:
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
      parameters:
          - seeds: "node-1, node-2"
internode_compression: none

同じシードを使用するすべてのノード。

構成のどこで間違っている可能性があるかを知ることはできますか? また、問題を解決するために追加情報が必要な場合は、お気軽にお知らせください。

ありがとうございました!

4

3 に答える 3

2

Cassandra 1.2.8 から始めている場合は、vnodes 機能を試してみてください。を設定する代わりに、cassandra.yaml でinitial_tokenコメントを外し、空白のままにするか、コメント アウトします。その後、トークンの位置を計算する必要はありません。各ノードはランダムに 256 個のトークンを割り当て、クラスターはほとんどバランスが取れています (数% 以内)。vnode を使用すると、ノードを追加または削除するたびにクラスターを「再調整」する必要がないことも意味します。# num_tokens: 256initial_token

vnode とその機能の詳細については、次のブログ記事を参照してください:
http://www.datastax.com/dev/blog/virtual-nodes-in-cassandra-1-2

于 2013-08-10T16:02:50.920 に答える
2

ここで問題になるのは、トークンの割り当てです。割り当てられたトークンが使用され、リング内のノードの位置と格納されるデータの範囲が決定されます。トークンを生成するときの目的は、0 から (2^127 - 1) までの範囲全体を使い切ることです。トークンは、順次インクリメントする必要がある mysql クラスターのような ID ではありません

gitには、クラスターのサイズに基づいてトークンを計算するのに役立つツールがあります。

この記事を読んで、トークンの理解を深めてください。生成される数値の意味を理解したい場合は、この記事を参照してください

于 2013-08-10T12:30:34.067 に答える
-1

replication_factorキースペースを作成するときは、次を指定する必要があります。

CREATE KEYSPACE demodb WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor': 3};

DESCRIBE KEYSPACE xinを使用すると、キースペースに現在設定されてcqlshいるものreplication_factorが表示されます (答えは 1 だと思います)。

詳細はこちら

于 2013-08-10T08:20:04.880 に答える