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

vig*_*mar 8 cassandra

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

data_file_directories:
    - E:/Cassandra/data/var/lib/cassandra/data
    - K:/Cassandra/data/var/lib/cassandra/data

当我创建密钥空间并插入数据时,我的密钥空间在两个目录中都被创建,数据被分散了.我想知道的是cassandra如何在多个目录之间分割数据?这背后的规则是什么?

zzn*_*ate 10

在data_file_directories下添加多个条目时,您正在使用Cassandra的JBOD功能.数据均匀分布在配置的驱动器上,与其可用空间成比例.

这也让你利用disk_failure_policy设置.您可以在此处阅读有关详细信息:http: //www.datastax.com/dev/blog/handling-disk-failures-in-cassandra-1-2

简而言之,您可以将Cassandra配置为继续运行,如果磁盘已满或完全失败,请执行此操作.这比RAID0(您将有效地具有与JBOD相同的容量)具有优势,因为您不必从备份(或完全修复)替换整个数据集,而只是对丢失的数据运行修复.另一方面,RAID0提供更高的吞吐量(取决于您知道如何调整RAID阵列以匹配文件系统和驱动器几何).

如果您具有容错/性能更高的RAID设置(例如RAID10)的资源,您可能只想使用单个目录以简化操作.大多数部署都开始倾向于使用JBOD而不是系统级容差的密度路径.

您可以在此处阅读有关此问题开发背后的思考过程:https: //issues.apache.org/jira/browse/CASSANDRA-4292