トークンの生成
仮想ノード(vnode)を使用しない場合は、クラスター用のトークンを計算する必要があります。
仮想ノード(vnode)を使用しない場合は、クラスター用のトークンを計算する必要があります。
Cassandra 1.1のドキュメントの以下のトピックに、トークンに関する概念説明情報が記載されています。
Cassandra 1.2以降での単一または複数データ・センター用のトークンの計算について
- 単一データ・センター・デプロイ:ハッシュ範囲を、クラスター内のノード数で割ることでトークンを計算します。
- 複数データ・センター・デプロイ:ハッシュ範囲が各データ・センター内のノードに均等に分割されるように各データ・センター用のトークンを計算します。
詳細な説明については、上記の概念説明情報をお読みください。
トークンの計算方法はパーティショナーのタイプによって異なります。
Murmur3Partitioner用のトークンの計算
仮想ノード(vnode)を使用しておらず、Murmur3Partitioner(デフォルト)を使用している場合は、トークンの生成に以下の方法を使用します。このパーティショナーはハッシュ値の可能な最大範囲として-2 63〜+2 63 -1を使用します。このパーティショナー用のトークンを計算するには、以下のようにします。
$ python -c "print [str(((2**64 / トークン数) * i) - 2**63) for i in range(トークン数)]"
たとえば、6つのノード用のトークンを生成するには:
$ python -c "print [str(((2**64 / 6) * i) - 2**63) for i in range(6)]"
このコマンドの結果、各ノードのトークンが表示されます。
[ '-9223372036854775808', '-6148914691236517206', '-3074457345618258604', '-2', '3074457345618258600', '6148914691236517202' ]
RandomPartitioner用のトークンの計算
Cassandra 1.2のクラスター内でRandomPartitionerを使用する場合にトークンを計算するには、Cassandra 1.1のトークン生成ツールを使用します。