その中でパーテショナーの設定ではデフォルトパーテショナーが変更され、RandomPartitionerから新たに追加されたMurmur3Partitionerに変更になりました
Murmur3Partitionerに関してはハッシュ値をRandomPartitionerより早く取得できシノニムも少なく抑えられるハッシュ関数で、事実上RandomPartitionerと同じ立ち位置になります
しかし、トークンのレンジ範囲はMurmur3PartitionerとRandomPartitionerでは違いがあります
・RandomPartitionerのレンジ範囲
0 ~ 2^127
( 0 ~ 170141183460469231731687303715884105728 )
・Murmur3Partitionerのレンジ範囲
-2^63 ~ 2^63 - 1
( -9223372036854775808 ~ 9223372036854775807 )
Murmur3Partitionerに対応したノードのトークン値を均等にする求め方はpythonを使い
python -c 'print [((2**64 / リングのノード数) * i) - 2**63 for i in range(リングのノード数)]'で求め、複数のリングが存在する場合はリングごとに1ずつ値をずらします
例)3ノードのリングが2つある場合
python -c 'print [((2**64 / 3) * i) - 2**63 for i in range(3)] [-9223372036854775808L, -3074457345618258603L, 3074457345618258602L] なので 一つ目のリングのノード3つは -9223372036854775808 -3074457345618258603 3074457345618258602 二つ目のリングのノード3つは一つずらし -9223372036854775807 -3074457345618258602 3074457345618258603
また、1.2に移行する際などデフォルトパーテショナーが変更されているので注意が必要です(必ず使用していたパーテショナーに合わせてください)
0 件のコメント:
コメントを投稿