的Apache Cassandra的3.10抛出:IllegalArgumentException - 为Murmur3Partitioner

问题描述:

令牌值无效的凭证,我使用的是:的Apache Cassandra的3.10抛出:IllegalArgumentException - 为Murmur3Partitioner

initial_token: 85070591730234615865843651857942052864 

导致以下Java异常,当我尝试启动卡桑德拉:

Exception (java.lang.IllegalArgumentException) encountered during startup: Invalid token for Murmur3Partitioner. Got 85070591730234615865843651857942052864 but expected a long value (unsigned 8 bytes integer). 
java.lang.IllegalArgumentException: Invalid token for Murmur3Partitioner. Got 85070591730234615865843651857942052864 but expected a long value (unsigned 8 bytes integer). 
    at org.apache.cassandra.dht.Murmur3Partitioner$2.fromString(Murmur3Partitioner.java:333) 
    at org.apache.cassandra.dht.Murmur3Partitioner$2.validate(Murmur3Partitioner.java:317) 
    at org.apache.cassandra.config.DatabaseDescriptor.applyInitialTokens(DatabaseDescriptor.java:885) 
    at org.apache.cassandra.config.DatabaseDescriptor.applyAll(DatabaseDescriptor.java:321) 
    at org.apache.cassandra.config.DatabaseDescriptor.daemonInitialization(DatabaseDescriptor.java:141) 
    at org.apache.cassandra.service.CassandraDaemon.applyConfig(CassandraDaemon.java:646) 
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:581) 
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:735) 
ERROR [main] 2017-03-01 19:57:15,861 CassandraDaemon.java:752 - Exception encountered during startup 
java.lang.IllegalArgumentException: Invalid token for Murmur3Partitioner. Got 85070591730234615865843651857942052864 but expected a long value (unsigned 8 bytes integer). 
    at org.apache.cassandra.dht.Murmur3Partitioner$2.fromString(Murmur3Partitioner.java:333) ~[apache-cassandra-3.10.jar:3.10] 
    at org.apache.cassandra.dht.Murmur3Partitioner$2.validate(Murmur3Partitioner.java:317) ~[apache-cassandra-3.10.jar:3.10] 
    at org.apache.cassandra.config.DatabaseDescriptor.applyInitialTokens(DatabaseDescriptor.java:885) ~[apache-cassandra-3.10.jar:3.10] 
    at org.apache.cassandra.config.DatabaseDescriptor.applyAll(DatabaseDescriptor.java:321) ~[apache-cassandra-3.10.jar:3.10] 
    at org.apache.cassandra.config.DatabaseDescriptor.daemonInitialization(DatabaseDescriptor.java:141) ~[apache-cassandra-3.10.jar:3.10] 
    at org.apache.cassandra.service.CassandraDaemon.applyConfig(CassandraDaemon.java:646) [apache-cassandra-3.10.jar:3.10] 
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:581) [apache-cassandra-3.10.jar:3.10] 
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:735) [apache-cassandra-3.10.jar:3.10] 

卡桑德拉开始在我的第一个节点上罚款initial_token: 0

我在做什么错?

任何帮助非常感谢!

我的主要问题是你为什么要设置它?

该令牌(85070591730234615865843651857942052864)很可能是随机分区程序,而不是杂音分区程序。可以检查其他节点的集群,但也许在cassandra.yaml设置:

partitioner: org.apache.cassandra.dht.RandomPartitioner 

Murmur3分区是更好的主意,虽然,不知道你在哪里得到了令牌或为什么你期望它的工作。如果只是添加节点,最好让它为它分配令牌。只是不要设置它。

# initial_token: 
+0

我在[this](http://www.datastax.com/2012/01/how-to-set-up-and-monitor-a-multi-node-cassandra-cluster-on -linux)指南,指定为每台机器生成和设置intial_tokens。这些信息是否过时了,我应该以不同的方式做到这一点? – macourtney7

+0

是的,这是5岁;)这就是vnodes之前,如果你设置'num_tokens:1',你仍然可以做。但只是不打扰,如果使用vnodes(默认) –

+0

所以我不需要更改任何令牌相关的设置。我只是留下'num_tokens:256'取消注释? – macourtney7