如果我增加 Cassandra Cluster 中的节点数量,磁盘空间会增加吗?
Will diskspace increase if I increase number of nodes in Cassandra Cluster?
我在 Cassandra 集群(部署在 ec2 实例上)中遇到这样的情况,磁盘 space 将在集群的每个节点中从 space 中变为 运行。现在如果我在 Cassandra 集群中添加更多实例,它会增加磁盘 space 吗?
我的意思是,每当我们 运行 超出 space 时,我们可以向 cassandra 集群添加更多实例以增加整体磁盘 space 吗?
这是正确的做法吗?如果是的话?
您可以向集群添加更多节点,然后重新平衡集群。这会将您的数据分散到更多节点,并且应该减少单个节点上的数据量。也就是说,前提是您的数据分区得足够好。
同时,请务必查看您的 TTL 值和 GC_grace 并确保您消耗的 space 数量确实有保证。
What i mean, whenever we are running out of space, can we add more
instances to cassandra cluster to inrease overall disk space?
是的,是的。
考虑一个 4 节点集群,复制因子 (RF) 为 3,每个节点有 100GB 的存储空间。假设数据足迹的初始完整副本为 60GB。有 4 个节点和 3 的 RF,每个节点将负责 3/4 的数据,或 45GiB。
Address Load Owns Total
10.0.0.1 45.0 GiB 75.0% 100Gb
10.0.0.2 45.0 GiB 75.0% 100Gb
10.0.0.3 45.0 GiB 75.0% 100Gb
10.0.0.4 45.0 GiB 75.0% 100Gb
使用大小分层压缩(默认),您希望将每个节点的磁盘使用率保持在总磁盘使用率的 50% 以下。此设置允许这样做。
但是,假设应用程序团队 运行 一夜之间负担很大。我们明天早上进来,发现这个:
Address Load Owns Total
10.0.0.1 70.0 GiB 75.0% 100Gb
10.0.0.2 70.0 GiB 75.0% 100Gb
10.0.0.3 70.0 GiB 75.0% 100Gb
10.0.0.4 70.0 GiB 75.0% 100Gb
基本上,一份完整的数据副本已经增长到 93.3 GiB。要将每个磁盘的数据量降低到 50% 以下,我们将不得不添加更多节点。
但是有多少?
如果我们添加一个节点(保持 RF 为 3),这意味着每个节点负责 3/5(60% 的数据),即 55.98 GiB。接近,但还不够。
如果我们添加两个节点,则总数为 6 个,这意味着每个节点负责 50% 的数据,即 46.65 GiB。这确实使我们回到每个节点 %50 以下,因此我们应该至少添加两个节点。
这样做之后,集群应该如下所示:
Address Load Owns Total
10.0.0.1 46.65 GiB 50.0% 100Gb
10.0.0.2 46.65 GiB 50.0% 100Gb
10.0.0.3 46.65 GiB 50.0% 100Gb
10.0.0.4 46.65 GiB 50.0% 100Gb
10.0.0.5 46.65 GiB 50.0% 100Gb
10.0.0.6 46.65 GiB 50.0% 100Gb
请注意,在新节点中简单地引导只会将数据移动到这些节点。它不会将其从现有节点中删除。为此,您应该在每个预先存在的节点上 运行 一个 nodetool cleanup
。
我在 Cassandra 集群(部署在 ec2 实例上)中遇到这样的情况,磁盘 space 将在集群的每个节点中从 space 中变为 运行。现在如果我在 Cassandra 集群中添加更多实例,它会增加磁盘 space 吗?
我的意思是,每当我们 运行 超出 space 时,我们可以向 cassandra 集群添加更多实例以增加整体磁盘 space 吗?
这是正确的做法吗?如果是的话?
您可以向集群添加更多节点,然后重新平衡集群。这会将您的数据分散到更多节点,并且应该减少单个节点上的数据量。也就是说,前提是您的数据分区得足够好。 同时,请务必查看您的 TTL 值和 GC_grace 并确保您消耗的 space 数量确实有保证。
What i mean, whenever we are running out of space, can we add more instances to cassandra cluster to inrease overall disk space?
是的,是的。
考虑一个 4 节点集群,复制因子 (RF) 为 3,每个节点有 100GB 的存储空间。假设数据足迹的初始完整副本为 60GB。有 4 个节点和 3 的 RF,每个节点将负责 3/4 的数据,或 45GiB。
Address Load Owns Total
10.0.0.1 45.0 GiB 75.0% 100Gb
10.0.0.2 45.0 GiB 75.0% 100Gb
10.0.0.3 45.0 GiB 75.0% 100Gb
10.0.0.4 45.0 GiB 75.0% 100Gb
使用大小分层压缩(默认),您希望将每个节点的磁盘使用率保持在总磁盘使用率的 50% 以下。此设置允许这样做。
但是,假设应用程序团队 运行 一夜之间负担很大。我们明天早上进来,发现这个:
Address Load Owns Total
10.0.0.1 70.0 GiB 75.0% 100Gb
10.0.0.2 70.0 GiB 75.0% 100Gb
10.0.0.3 70.0 GiB 75.0% 100Gb
10.0.0.4 70.0 GiB 75.0% 100Gb
基本上,一份完整的数据副本已经增长到 93.3 GiB。要将每个磁盘的数据量降低到 50% 以下,我们将不得不添加更多节点。
但是有多少?
如果我们添加一个节点(保持 RF 为 3),这意味着每个节点负责 3/5(60% 的数据),即 55.98 GiB。接近,但还不够。
如果我们添加两个节点,则总数为 6 个,这意味着每个节点负责 50% 的数据,即 46.65 GiB。这确实使我们回到每个节点 %50 以下,因此我们应该至少添加两个节点。
这样做之后,集群应该如下所示:
Address Load Owns Total
10.0.0.1 46.65 GiB 50.0% 100Gb
10.0.0.2 46.65 GiB 50.0% 100Gb
10.0.0.3 46.65 GiB 50.0% 100Gb
10.0.0.4 46.65 GiB 50.0% 100Gb
10.0.0.5 46.65 GiB 50.0% 100Gb
10.0.0.6 46.65 GiB 50.0% 100Gb
请注意,在新节点中简单地引导只会将数据移动到这些节点。它不会将其从现有节点中删除。为此,您应该在每个预先存在的节点上 运行 一个 nodetool cleanup
。