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

时间:2013-04-10 12:16:23

标签: cassandra

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我能够猜到密钥空间如何在多个数据目录之间分割。基于目录上的最大可用空间和负载,将相同列族的SSTable写入不同的数据目录。