假设我有一个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个目录?
答案 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等自动部署工具。这样,新节点的配置本质上是群集中所有其他节点的“千篇一律”。