所以我用Apache Cassandra获得了4个Raspberry-Pis。已经完成了每个和其他配置的静态IP。每个Pi都可以在网络上看到其他3个。
知识产权地址是:
1. Pi01 - 192.168.178.51
2. Pi02 - 192.168.178.52
3. Pi03 - 192.168.178.53
4. Pi04 - 192.168.178.54
在我的 cassandra.yaml 文件中,我更改了这些变量:
cluster_name: 'Test Cluster'
initial_token: /* Pi01 has 0, the others got generated tokens */
seed_provider:
- seeds: "192.168.178.51"
listen_address: Droplet's IP
rpc_address: 0.0.0.0
endpoint_snitch: RackInferringSnitch
我用内置的令牌生成器'生成了4个令牌。在/ tools /
中我的问题是:
为什么在我开始使用Pi01之后会让令牌感到困惑?
WARN 10:24:09令牌6436405636961323290将所有权从/192.168.178.52更改为/192.168.178.51
WARN 10:24:09令牌7179378171345093230将所有权从/192.168.178.52更改为/192.168.178.51
WARN 10:24:09令牌4885181782908097142将所有权从/192.168.178.52更改为/192.168.178.51
WARN 10:24:09令牌742967880462982164将所有权从/192.168.178.52更改为/192.168.178.51
WARN 10:24:09令牌5652804589798010165将所有权从/192.168.178.52更改为/192.168.178.51
WARN 10:24:09令牌4400097028434728215将所有权从/192.168.178.52更改为/192.168.178.51
WARN 10:24:09令牌1675545333640867684将所有权从/192.168.178.52更改为/192.168.178.51
WARN 10:24:09 Token -8663374480600398885将所有权从/192.168.178.52更改为/192.168.178.51
WARN 10:24:09令牌1702469637743651899将所有权从/192.168.178.52更改为/192.168.178.51
WARN 10:24:09 Token -4986820230313833771将所有权从/192.168.178.52更改为/192.168.178.51
WARN 10:24:09令牌5284137053355309400将所有权从/192.168.178.52更改为/192.168.178.51
WARN 10:24:09 Token -7033204945348820093将所有权从/192.168.178.52更改为/192.168.178.51
WARN 10:24:09 Token -7868759649811811191将所有权从/192.168.178.52更改为/192.168.178.51
答案 0 :(得分:1)
虽然您没有通过查看生成的令牌值来指示您的分区程序,但我可以告诉您正在使用Murmur3分区程序。您看到此行为的原因是,传递的token-generator
旨在与随机分区程序一起使用。两个分区使用不同的令牌范围。
随机分区= 0到2 ^ 127
Murmur3 Partitioner = -2 ^ 63到2 ^ 63-1
对于具有Murmur3分区程序的4节点集群,您应该使用以下令牌范围:
aploetz@dockingBay94:~/scripts$ python murmur3Cluster.py
How many nodes are in your cluster? 4
node 0: -9223372036854775808
node 1: -4611686018427387904
node 2: 0
node 3: 4611686018427387904
FYI-这是用于计算这些值的(Python)代码:
import sys
if (len(sys.argv) > 1):
num=int(sys.argv[1])
else:
num=int(raw_input("How many nodes are in your cluster? "))
for i in range(0, num):
print 'node %d: %d' % (i, (((2**64 / num) * i) - 2**63))
此外,如果您使用Virtual Nodes配置群集,它将为您处理令牌生成/管理的所有内容。
编辑:我调查了token-generator
工具,看看是否有murmur3分区程序的选项。显然,CASSANDRA-9300已解决了这个问题。不确定您的Cassandra版本,但版本2.2.0,2.1.6和2.0.16 token-generator
有--murmur3
标志。并且"是的,"它产生的结果与我上面的Python代码相同。