Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra:节点添加/删除是否要求所有集群节点都存在?_Cassandra - Fatal编程技术网

Cassandra:节点添加/删除是否要求所有集群节点都存在?

Cassandra:节点添加/删除是否要求所有集群节点都存在?,cassandra,Cassandra,当添加新节点时,由于新令牌的均匀分布, 环的当前节点应将数据迁移到此新节点 那么,它是否要求所有节点都存在?如果不是,则如果某些节点 如果出现故障,则将错过这些部件的数据迁移,以及 什么时候修理?那些节点什么时候回来 类似地,删除节点会将其数据迁移到其他节点,因此 似乎所有其他节点都必须存在,否则它将丢失 数据?Cassandra要求所有节点都存在。当另一个节点关闭时,我尝试添加一个节点,但收到以下错误: Exception (java.lang.RuntimeException) encoun

当添加新节点时,由于新令牌的均匀分布, 环的当前节点应将数据迁移到此新节点

那么,它是否要求所有节点都存在?如果不是,则如果某些节点 如果出现故障,则将错过这些部件的数据迁移,以及 什么时候修理?那些节点什么时候回来

类似地,删除节点会将其数据迁移到其他节点,因此 似乎所有其他节点都必须存在,否则它将丢失
数据?

Cassandra要求所有节点都存在。当另一个节点关闭时,我尝试添加一个节点,但收到以下错误:

Exception (java.lang.RuntimeException) encountered during startup: A node required to move the data consistently is down (/172.17.0.2). If you wish to move the data from a potentially inconsistent replica, restart the node with -Dcassandra.consistent.rangemovement=false
java.lang.RuntimeException: A node required to move the data consistently is down (/172.17.0.2). If you wish to move the data from a potentially inconsistent replica, restart the node with -Dcassandra.consistent.rangemovement=false
    at org.apache.cassandra.dht.RangeStreamer.getAllRangesWithStrictSourcesFor(RangeStreamer.java:275)
    at org.apache.cassandra.dht.RangeStreamer.addRanges(RangeStreamer.java:158)
    at org.apache.cassandra.dht.BootStrapper.bootstrap(BootStrapper.java:83)
    at org.apache.cassandra.service.StorageService.bootstrap(StorageService.java:1212)
    at org.apache.cassandra.service.StorageService.joinTokenRing(StorageService.java:891)
    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:657)
    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:570)
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:346)
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:569)
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:697)
ERROR 09:53:37 Exception encountered during startup
当我尝试在不同的dc中添加节点时,也会发生同样的情况

至于删除节点。Decomission仅在所有副本都已启动时才起作用。解算将首先将所有数据流传输到新副本,如果流传输失败,则解算失败

$ nodetool decommission
error: Stream failed
-- StackTrace --
org.apache.cassandra.streaming.StreamException: Stream failed
    ...
您仍然可以通过关闭节点并执行
nodetool removenode
来强制删除。这不会流式传输数据,但会从集群中删除节点。小心使用


如果decomission或removenode都不起作用,也会有nodetool assasinate。

谢谢您的信息!如果节点添加/删除要求其他节点处于活动状态,那么集群的可行性似乎很差。“你这样认为吗?”金洛说,其实不是。只要Cassandra中的节点停机,集群就会处于不良状态。要安全地添加或删除节点,集群需要在所有节点都启动的情况下处于良好状态。但是,正如有
removenode
命令用于在集群处于坏状态时删除节点一样,也有方法添加处于坏状态的节点。如果您只关闭了一个节点,并且希望替换该节点,则可以将cassandra-env.sh中的
-Dcassandra.replace_address
变量设置为false。您还可以添加一个节点,而无需流式传输任何数据(但请注意,此节点仍将接受请求)。之后,您必须运行“修复”。但这没有任何意义,因为在修复完成之前,这将危及一致性
auto_bootstrap
仅在初始化没有数据的新集群时使用。当然,根据您的用例,它可能有其他用途。