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 即使密钥空间的复制系数为1,数据也会在我的第二个节点上复制/复制_Cassandra_Cassandra 2.0 - Fatal编程技术网

Cassandra 即使密钥空间的复制系数为1,数据也会在我的第二个节点上复制/复制

Cassandra 即使密钥空间的复制系数为1,数据也会在我的第二个节点上复制/复制,cassandra,cassandra-2.0,Cassandra,Cassandra 2.0,我有一个由3个节点组成的Cassandra集群,我使用SimpleStrategy和ReplicationFactor 1创建了一个键空间'abcd'。因为我选择了RF作为1,所以我假设对我的node-1的任何写入都不应该跨其他2个节点复制 但当我将一条记录插入keyspace/table时,我看到这一新行被插入到集群中的所有节点中 我的问题是,因为我选择了RF作为这个键空间的1,所以我希望这个集群中只有一个节点(即node-1)应该拥有这个数据,而不是其余的节点 如果我的理解有误,请纠正我。由

我有一个由3个节点组成的Cassandra集群,我使用SimpleStrategy和ReplicationFactor 1创建了一个键空间'abcd'。因为我选择了RF作为1,所以我假设对我的node-1的任何写入都不应该跨其他2个节点复制

但当我将一条记录插入keyspace/table时,我看到这一新行被插入到集群中的所有节点中

我的问题是,因为我选择了RF作为这个键空间的1,所以我希望这个集群中只有一个节点(即node-1)应该拥有这个数据,而不是其余的节点


如果我的理解有误,请纠正我。

由于您的RF为1,您的数据只写入一个节点。但您也可以通过从其他节点运行select查询来访问该数据,因为Cassandra集群中的任何节点都可以访问集群中存在的所有数据

如果运行查询的节点没有数据,它将从其他节点获取数据并显示结果

您可以通过运行来检查哪个节点具有数据


您需要提到您的键空间、表名和分区键

您是如何检查数据是否将发送到所有节点的?只需查询节点上的表“Select*from keyspace.table where id='my new created rowID';”。现在就有意义了。。。非常感谢。此外,我在节点1上执行了SQL,但实际数据保存在节点2中。有可能吗?是的,完全有可能。节点1只是充当协调器节点。Cassandra为每个节点分配密钥令牌范围。node-2必须保留该特定密钥的范围,因此数据将转到node-2。明白了。再次感谢!!再加一句。如果要验证节点上是否存在记录,可以执行上面提到的“nodetool getendpoints”来定位服务器。转到该服务器并转到表目录。在该表上发出“nodetool刷新”(以确保数据刷新到磁盘)。然后在sstable文件(*Data.db)上运行“sstabledump”。其中一个SSTABLE应该有您的行。谢谢@JimWartnick分享。