如何正确配置带有cassandra.yaml的Apache Cassandra 4节点集群?

时间:2015-07-20 10:30:53

标签: python apache cassandra nodetool

所以我用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

1 个答案:

答案 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代码相同。