同时在多台服务器上进行Cassandra清理

5
我们有一个大型的Cassandra集群,包括18台服务器(每个服务器近5T数据)。
我们按照此文档http://docs.datastax.com/en/cassandra/2.0/cassandra/operations/ops_add_node_to_cluster_t.html添加了新节点。
添加新节点后,我们开始清理数据(nodetool cleanup)。
文档建议:在所有新节点运行之后,在以前存在的每个节点上运行nodetool cleanup,以删除不再属于这些节点的键。在进行下一个节点之前,请等待一个节点的清理完成。
但是在我们的情况下,清理一个服务器需要2-3天时间。我的问题是,我能否立即在多台服务器上进行清理,比如2或3台...
还是这可能导致数据丢失?
一些更多信息。
我们使用带有vnodes的Cassandra 2.0.13。同时我们在Cassandra中将文件保存为块。
复制因子= 3
1个回答

8

清理不涉及任何其他节点,因此可以安全地并行运行。但是,由于清理可能使用大量磁盘I / O,您可能希望一次只在一个节点上运行以减少性能影响。


4
记录一下,Richard 是正确的,但是在 Cassandra 2.1 及更高版本中,还有另一个问题 - 清理操作会在 CF 中所有 SSTable 上并行运行,使用所有压缩器。这将导致该节点上的压缩工作滞后,并且根据摄入量的大小,您可能会在磁盘上拥有数百个或数千个 SSTable,这可能会显著影响读取性能。因此,逐个节点运行清理操作可以帮助在清理期间保持低延迟读取性能。 - Jeff Jirsa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接