配置多个目录时,cassandra如何分割键空间数据?

配置多个目录时,cassandra如何分割键空间数据?,cassandra,Cassandra,我在cassandra.yaml文件中配置了三个单独的数据目录,如下所示: data_file_directories: - E:/Cassandra/data/var/lib/cassandra/data - K:/Cassandra/data/var/lib/cassandra/data 数据文件目录: -E:/Cassandra/data/var/lib/Cassandra/data -K:/Cassandra/data/var/lib/Cassandra/data 当我创

我在cassandra.yaml文件中配置了三个单独的数据目录,如下所示:

data_file_directories: - E:/Cassandra/data/var/lib/cassandra/data - K:/Cassandra/data/var/lib/cassandra/data 数据文件目录: -E:/Cassandra/data/var/lib/Cassandra/data -K:/Cassandra/data/var/lib/Cassandra/data
当我创建键空间并插入数据时,我的键空间在两个目录中创建,数据分散。我想知道的是cassandra如何在多个目录之间分割数据?。这背后的规则是什么?

我能猜出键空间是如何在多个数据目录之间分割的。根据目录上的最大可用空间和负载,将相同列族的表写入不同的数据目录。

在数据文件目录下添加多个条目时,您使用的是Cassandra的JBOD功能。数据按可用空间的比例均匀分布在已配置的驱动器上

这也让您可以利用磁盘故障策略设置。您可以在此处阅读有关详细信息:

简而言之,您可以将Cassandra配置为继续运行,在磁盘已满或完全出现故障时尽其所能。这比RAID0(在RAID0中,您将有效地拥有与JBOD相同的容量)具有优势,因为您不必从备份(或完全修复)中替换整个数据集,而只需对丢失的数据运行修复。另一方面,RAID0提供了更高的吞吐量(取决于您对如何调整RAID阵列以匹配文件系统和驱动器几何结构的了解程度)

如果您有足够的资源进行容错/更高性能的RAID设置(例如RAID10),为了简单起见,您可能只需要使用一个目录。大多数部署开始倾向于密度路线,使用JBOD而不是系统级容差

您可以在此处阅读本期发展背后的思维过程:

此答案应成为卡桑德拉文档的一部分