9

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

数据文件目录:
    -E:/Cassandra/data/var/lib/cassandra/data
    -K:/Cassandra/data/var/lib/cassandra/data

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

4

2 回答 2

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

于 2014-03-08T18:40:28.723 回答
0

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

于 2013-04-23T06:03:01.117 回答