更改分区后,cassandra不会启动

时间:2018-04-23 20:26:03

标签: cassandra datastax

我改变了cassandra分区器。默认分区程序是Murmur3Partitioner。我编辑cassandra.yaml并将分区程序更改为ByteOrderedPartitioner以使用>,> =,< =和<分区键上的运算符。

但是在停止之后,然后使用以下命令启动服务:

sudo service dse stop 
sudo nano /etc/dse/cassandra/cassandra.yaml
sudo service dse start

DSE无法启动并显示终端中的以下行:

Job for dse.service failed because the control process exited with error code. See "systemctl status dse.service" and "journalctl -xe" for details.

而cassandra日志是:

ERROR [SSTableBatchOpen:2] 2018-04-24 00:54:10,498  SSTableReader.java:511 - Cannot open /var/lib/cassandra/data/system/local-7ad54392bcdd35a6$84174e047860b377/mc-252-big; partitioner org.apache.cassandra.dht.Murmur3Partitioner does not match system partitioner org.apache.cassandra.dht.ByteOrderedPartitioner.  Note that the default partitioner starting with Cassandra 1.2 is Murmur3Partitioner, so you will need  to edit that to match your old partitioner if upgrading.

1 个答案:

答案 0 :(得分:1)

您无法更改分区程序。那完全没有支持。

为了做到这一点,你需要使用ByteOrderedPartitioner分区器创建一个新的集群,在将数据从旧复制到新的同时写入两者。一旦所有数据都通过交换机读取从旧到新复制。

我强烈建议不要使用ByteOrderedPartitioner,而应该尝试稍微更改一下数据模型以获取所有>,> =,< =和<单个分区内的操作或您可能会遇到性能问题。尝试避免范围查询,如果您遇到多个分区,或者协调器上的工作负载会更差,延迟会增加。 BOP适用于非常具体的用例,而非一般用途。