如何在cassandra集群中的不同节点之间分发数据
How to distribute data across different nodes in cassandra cluster
我已经设置了一个多节点 cassandra 集群,它有两个不同的节点,具有所有必需的配置,即 cluster_name 、 endpoint_snitch 、 seeds 、 auto_bootstrap 等。
我将数据中心用作两个节点的 dc1。我使用 -
创建了键空间
CREATE KEYSPACE dcTest WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'dc1' : 2 };
现在,当我启动两个节点并尝试在数据库中输入数据时,它会在两个节点上创建副本。即,如果我在 table 中创建 4 行,它也会在另一个节点上复制所有 4 行。我希望这些数据跨节点分布。即两个在一个节点上,两个在另一个节点上。
是通过配置keyspace实现的吗?我错过了什么吗?
Nodetoll 状态 -
nodetool -p 7199 status cassandrareplication1
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 10.45.123.123 35.01 MB 256 50.3% 8c529955-c42a-4629-dfgh-0666a444acbb rack1
UN 10.45.123.124 225.4 KB 256 49.7% eddf1039-d803-4d61-dfse-1ce0ec3782a9 rack1
你应该复制因子 1,而不是 2。这意味着你在这个键空间中的所有数据都将在这个数据中心内复制一次。以 2 作为复制因子,它将被复制两次,3 三次,依此类推。
拥有 2 个复制意味着您希望将 2 个数据副本放入数据中心,此后 Cassnadra 将在每个节点上放置 1 个完整的数据副本以满足 2 个 RF。
为了实现您的目标,您可能需要 1 个 RF 和 2 个节点,以便 Cassandra 可以在节点之间分发数据。
您可以使用
更改键空间
Alter KEYSPACE dcTest WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'dc1' : 1 };
别忘了 运行 之后用 -full 选项修复 nodetool。
我已经设置了一个多节点 cassandra 集群,它有两个不同的节点,具有所有必需的配置,即 cluster_name 、 endpoint_snitch 、 seeds 、 auto_bootstrap 等。 我将数据中心用作两个节点的 dc1。我使用 -
创建了键空间CREATE KEYSPACE dcTest WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'dc1' : 2 };
现在,当我启动两个节点并尝试在数据库中输入数据时,它会在两个节点上创建副本。即,如果我在 table 中创建 4 行,它也会在另一个节点上复制所有 4 行。我希望这些数据跨节点分布。即两个在一个节点上,两个在另一个节点上。
是通过配置keyspace实现的吗?我错过了什么吗?
Nodetoll 状态 -
nodetool -p 7199 status cassandrareplication1
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 10.45.123.123 35.01 MB 256 50.3% 8c529955-c42a-4629-dfgh-0666a444acbb rack1
UN 10.45.123.124 225.4 KB 256 49.7% eddf1039-d803-4d61-dfse-1ce0ec3782a9 rack1
你应该复制因子 1,而不是 2。这意味着你在这个键空间中的所有数据都将在这个数据中心内复制一次。以 2 作为复制因子,它将被复制两次,3 三次,依此类推。
拥有 2 个复制意味着您希望将 2 个数据副本放入数据中心,此后 Cassnadra 将在每个节点上放置 1 个完整的数据副本以满足 2 个 RF。 为了实现您的目标,您可能需要 1 个 RF 和 2 个节点,以便 Cassandra 可以在节点之间分发数据。 您可以使用
更改键空间Alter KEYSPACE dcTest WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'dc1' : 1 };
别忘了 运行 之后用 -full 选项修复 nodetool。