无法启动 Cassandra - Snitch 的数据中心与以前不同

Posted

技术标签:

【中文标题】无法启动 Cassandra - Snitch 的数据中心与以前不同【英文标题】:Cannot start Cassandra - Snitch's Datacenter Differs from Previous 【发布时间】:2016-12-22 00:54:28 【问题描述】:

我正在尝试在本地启动 DSE 5.0.1 Cassandra(单节点)。

出现以下错误:

CassandraDaemon.java:698 - 如果 snitch 的数据中心无法启动节点 (Cassandra) 与之前的数据中心 (Graph) 不同。请修复 snitch 配置、停用和重新启动此节点或使用 标志 -Dcassandra.ignore_dc=true

【问题讨论】:

【参考方案1】:

如果您使用 GossipingPropertyFileSnitch,请使用选项启动 Cassandra

-Dcassandra.ignore_dc=true

如果启动成功,执行:

nodetool repair
nodetool cleanup

之后,Cassandra 应该可以在没有忽略选项的情况下正常启动。

【讨论】:

请不要对多个问题发布相同的答案。发布一个好的答案,然后投票/标记以关闭其他问题作为重复问题。如果问题不是重复的,调整您对该问题的回答 不起作用。 cassandra 服务自动停止。【参考方案2】:

当节点启动并看到它有信息表明它以前是不同数据中心的一部分时,就会发生这种情况。如果数据中心在上次启动时不同,然后被更改,则会发生这种情况。

在您的情况下,您最有可能使用DseSimpleSnitch,它根据该节点的工作负载命名数据中心。以前,该节点是在启用 Graph 的情况下启动的,这会将名称变为 Graph。现在尝试在未启用 Graph 的情况下启动它会导致它命名 Datacenter Cassandra,这是默认设置。

使用-Dcassandra.ignore_dc=true 标志将允许您继续,但更好的解决方案是切换到GossipingPropertyFileSnitch 并为此机器指定一个专用的数据中心名称。

另一个选项(如果您只是在测试)是清除数据目录,因为这将清除之前为节点标记数据中心的信息。这很可能是sudo rm -R /var/lib/cassandra/

【讨论】:

擦除数据目录为我解决了这个问题。谢谢@RussS

以上是关于无法启动 Cassandra - Snitch 的数据中心与以前不同的主要内容,如果未能解决你的问题,请参考以下文章

cassandra 中的两个节点不会互相闲聊

Cassandra教程---- 数据分布和复制

无法使用 bin/cassandra 启动 Cassandra db

架构更改后 Cassandra 无法启动

无法启动 Cassandra:端口已在使用中

PHP 警告:PHP 启动:无法加载动态库“cassandra.so”(已尝试:/usr/lib/php/20170718/cassandra