创建Cassandra子簇

创建Cassandra子簇,cassandra,cql,cassandra-3.0,Cassandra,Cql,Cassandra 3.0,我需要在N台机器上创建K个重叠的Cassandra集群(K>>N)。每个集群可以有1到N个节点。我知道这样做的一种方法是为节点所属的每个集群创建一个单独的进程(或docker容器) 然而,我的问题是,我是否可以更改Cassandra以允许创建子集群?这意味着每个节点上只运行1个Cassandra实例,但我将能够控制数据复制和数据放置,以便在子集群中,例如,我能够执行仲裁写入。否,不可能像您所描述的那样定义子集群——每个进程始终只有一个Cassandra集群 但Cassandra有一个定义机器所在

我需要在N台机器上创建K个重叠的Cassandra集群(K>>N)。每个集群可以有1到N个节点。我知道这样做的一种方法是为节点所属的每个集群创建一个单独的进程(或docker容器)


然而,我的问题是,我是否可以更改Cassandra以允许创建子集群?这意味着每个节点上只运行1个Cassandra实例,但我将能够控制数据复制和数据放置,以便在子集群中,例如,我能够执行仲裁写入。

否,不可能像您所描述的那样定义子集群——每个进程始终只有一个Cassandra集群

但Cassandra有一个定义机器所在位置的键空间概念,以及定义数据中心和节点之间如何复制数据的键空间。一致性级别,例如,
QUORUM
取决于键空间配置


在您的案例中,我会朝着这个方向思考——定义数据中心,创建必要的键空间,并为这些键空间设置正确的复制因子。

您能更详细地描述一下您的用例吗?解决方案可能是使用数据中心,但我不确定是否正确理解了您的问题。因此,我需要根据用例进行复制,因此对于特定的键空间或行,我希望在某些服务器上进行复制(基于地理位置)。对于其他行,我想做一些其他的事情。例如,我可以在服务器a-b-c(我假设的子集群是:a-b-c-x-y)上执行仲裁吗?而对于另一行,我可以在服务器b-d-e(子集群是b-d-e-p-q)上执行仲裁吗?使用数据中心,我可以在某个服务器上复制一行,而对于另一行,我可以在其他地方复制它吗?例如,我可以在服务器a-b-c(我假设的子集群是:a-b-c-x-y)上写一行,而在另一行服务器b-d-e(子集群是b-d-e-p-q)上写一行吗?如果不是,你认为我必须修改Cassandra的哪些部分才能得到期望的结果?如果这些数据在同一个表中,那么就不可能。。。但是如果它在不同的键空间中,那么如果您正确定义了DC是可能的……关于修改,我认为它太大了,无法执行。我建议在cassandra用户邮件列表中询问我可以问一下您为什么需要这个吗?