トークンの生成

仮想ノード(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のトークン生成ツールを使用します。