cassandra集群节点的数据目录应该相同吗?

时间:2017-01-23 06:26:27

标签: cassandra datastax cassandra-2.1

假设我有一个2节点集群,其中所有节点都在cassandra.yaml中配置了相同的 data_file_directories (比如说3个文件夹) 例如

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

现在假设我将第三个节点添加到具有不同data_file_directories的集群(比如说1个文件夹)

 data_file_directories:
    - B:/Cassandra/data/var/lib/cassandra/data

这样做不正确吗?在重新平衡数据期间,现有节点的3个目录中的数据是否会流向新节点的1个目录?

1 个答案:

答案 0 :(得分:4)

Nate McCall(现任Apache Cassandra项目主席)在这里回答了类似的问题:How does cassandra split keyspace data when multiple directories are configured?

简而言之,这应该没问题。无论有多少数据,Cassandra均匀地在1 1 1 1 1 1 1 1 1 1 1 1 2 3 4 5 6 7 8 9 10 1 3 6 10 15 21 28 36 45 1 4 10 20 35 56 84 120 1 5 15 35 70 126 210 1 6 21 56 126 252 1 7 28 84 210 1 8 36 120 1 9 45 1 10 1 中的条目中传播数据。此外,节点负责的令牌数量与此设置无关,因此您不应该看到任何热点或不平衡(至少不是由于此)。

话虽如此,我还要补充以下几点:

  • 如果指定多个数据目录是不同的物理挂载点,则可以提供帮助。这样,如果一个磁盘应该意外填满或失败,节点仍然可以继续运行。
  • 如果我计划添加一个节点并长期保留所有节点,我会尽可能接近原节点指定新节点的配置。当您负责多个节点和群集时,这尤其有助于在一个大环境中,如果您需要进行故障排除,则无需记住群集中某个特定节点的差异/原因。
  • 最后一点的例外情况是,如果我决定转移到单个数据目录。但是,我还计划退出现有节点,并用具有类似配置的节点替换它们。

专家提示:如果可以,请尝试使用Chef或Spinnaker等自动部署工具。这样,新节点的配置本质上是群集中所有其他节点的“千篇一律”。