その中でパーテショナーの設定ではデフォルトパーテショナーが変更され、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 件のコメント:
コメントを投稿