我将replication_factor设置为1,并且有一个节点N1集群托管所有数据(100%,1G)。当我向群集中添加一个新节点N2以获取一半的数据时,我看到的是N1(50%,1G)、N2(50%,0.5G)。
看起来节点N1仍然托管着所有的数据,即使一半的数据已经在N2上被复制。当群集中只有一个副本(replication_factor=1)时,为什么会发生这种情况?
发布于 2015-01-16 04:02:23
您是否在N1节点上运行了nodetool cleanup?通读有关Nodetool's cleanup command的文档
将新节点添加到群集中后,使用此命令删除不需要的数据。Cassandra不会自动将数据从丢失了部分分区范围的节点中删除到新添加的节点。在新节点启动并运行后,在源节点和共享相同子范围的相邻节点上运行nodetool清理。如果在添加节点后未能运行此命令,则会导致Cassandra包含旧数据以重新平衡该节点上的负载。
https://stackoverflow.com/questions/27971836
复制相似问题