我将replication_factor设置为1,并且我有一个节点N1群集托管所有数据(100%,1G)。当我向集群添加新节点N2以获取一半数据时,我看到的是N1(50%,1G),N2(50%,0.5G)。
看起来节点N1仍然托管所有数据,即使一半数据已经在N2处复制。为什么在集群中只有一个副本(replication_factor = 1)时会发生这种情况?
答案 0 :(得分:4)
您是否在N1节点上运行nodetool cleanup
了?阅读Nodetool's cleanup command上的文档:
使用此命令可在添加新节点后删除不需要的数据 集群。 Cassandra不会自动从节点中删除数据 将部分分区范围丢失到新添加的节点。跑 nodetool清理源节点和相邻节点上的 在新节点启动并运行后共享相同的子范围。失败 在添加节点后运行此命令会导致Cassandra包含 旧数据重新平衡该节点上的负载。