2017-01-23 99 views
1

比方说,我有一个2节点集群,其中所有的节点具有相同的data_file_directories(与说3文件夹)中cassandra.yaml 配置例如cassandra集群节点的数据目录应该相同吗?

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个目录?

回答

3

内特·麦考尔(当前的Apache Cassandra的项目主席)在这里回答了类似的问题:How does cassandra split keyspace data when multiple directories are configured?

总之,这应该是罚款。 Cassandra均匀分布data_file_directories中的条目数据,无论有多少。此外,节点负责的令牌数独立于此设置,因此您不应该看到任何热点或不平衡(至少不是由于此)。

话虽这么说,我将加入以下几点:

  • 指定多个数据目录可以帮助,如果他们是不同的物理安装点。这样,如果一个磁盘应该填满或意外失败,节点仍然可以继续运行。
  • 如果我上增加一个节点,并保持所有的人都为长期计划,我将指定尽可能靠近我可以到原来的节点的新节点的配置。当您负责多个节点和集群时,这尤其有助于在一个大环境中,而不必记住在需要排除故障时如何以及为什么集群中的某个特定节点不同。
  • 最后一点的例外情况是,如果我决定前进到单个数据目录。但是,我也有一个计划来淘汰现有的节点,并将它们替换为也具有类似配置的节点。

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

相关问题