【发布时间】:2019-01-18 11:08:22
【问题描述】:
我有一个 RF=3 的 3 节点 Cassandra 集群。现在,当我执行 nodetool status 时,集群中每个节点的 拥有 为 100%。
但是当集群中有 5 个节点时,RF=3。 拥有为 60%(大约如下图所示)。
现在,根据我的理解,分区器将计算对应于第一个副本节点的哈希,并且数据也将根据 RF 复制到其他节点上。 现在我们有一个 5 节点的集群,RF 是 3。
不应该 3 个节点平均拥有所有数据(100%),因为分区器将根据分区策略指向一个节点,然后将相同的数据复制到等于 RF-1 的剩余节点?就像数据在所有节点(5)之间均匀分布,即使 RF 为 3。
编辑1:
据我了解,每个节点 60%(大约)拥有的原因是因为 RF 为 3。这意味着每行将有 3 个副本。这意味着将有 300% 的数据。现在集群中有 5 个节点,partitioner 将使用默认的随机散列算法,将数据均匀地分布在集群中的所有节点上。
但现在的问题是,我们检查了集群的所有节点,并且所有节点都包含所有数据,即使 RF 为 3。
编辑2:
@Aaron 我按照评论中的说明做了。我创建了一个包含 3 个节点的新集群。
我创建了一个 Keyspace“测试”并将类设置为最简单的策略,并将 RF 设置为 2。
然后我创建了一个具有分区键 (id,name) 的表“emp”。
现在我在第一个节点中插入了一行。
根据您的解释,它应该只在 2 个节点中,因为 RF=2。
但是当我登录到所有 3 个节点时,我可以看到在所有节点中复制的行。
我认为由于密钥空间在所有节点中被复制,因此数据也在被复制。
【问题讨论】:
标签: database cassandra nosql cassandra-3.0