sstableloader 跨副本复制数据

问题描述 投票:0回答:1

我有一个 3 节点 Cassandra 集群,复制因子 (RF) 为 2(源集群和目标集群)。我使用 sstableloader 将快照备份加载到目标集群中。数据加载成功,但是我注意到目标集群中的数据大小几乎是原始大小的两倍。

在相同的复制因子和节点数的情况下,我预计数据大小与源相似。

对于为什么会发生这种情况以及如何解决它有什么见解吗?

上下文:

我计划将 1TB 数据从源集群加载到不同的目标集群,这两个集群都是在 Kubernetes 中配置的。 预先感谢您的帮助!

database cassandra database-administration
1个回答
0
投票

sstableloader
实用程序将 SSTable 的部分流式传输到集群的目标节点。接收节点(副本)可能不一定拥有给定 SSTable 中的所有分区,因此它会被分成“块”,以便 SSTable 块主要包含该节点拥有的令牌范围内的分区。

但有时,SSTable 块最终会出现不一定属于某个节点的分区,因为它属于该节点拥有的令牌范围。例如,节点可能拥有令牌范围

[1..10, 21..30, 51..60, 71..80]
,但流式传输到该节点的 SSTable 块包含属于范围
[5..60]
内的分区。不属于该节点的分区最终将在后台被压缩,因为它们不属于该节点。

这也称为“流媒体过多”,会导致磁盘上文件大小过大,但它最终会自行解决,因此无需担心。

大多数人认为

sstableloader
读取 SSTable 的内容并一次加载一个分区,但事实并非如此。它加载 SSTable 块,而不是单个分区。干杯!

© www.soinside.com 2019 - 2024. All rights reserved.