gpt4 book ai didi

Cassandra 3.11 SSTableLoader 机制

转载 作者:行者123 更新时间:2023-12-02 11:30:32 27 4
gpt4 key购买 nike

我一直在使用 SSTableLoader 实用程序在两个不同的 Cassandra 集群之间批量传输数据,我想知道是否有其他人遇到了相同的问题。源集群有数据,目标集群没有数据。

我已经阅读了 datastax 页面上有关该实用程序的详细信息,但关于它的工作原理,我仍然有一些未解答的问题。

我在源集群的事件节点上使用该实用程序,命令遵循以下格式:

sstableloader -d target.host.ip -v -f /etc/cassandra/cassandra.yaml /cassandra/data/keyspace1/table1-uuid

这两个集群均设置有 256 个虚拟节点,每个集群中有 6 个节点。两种环境中的架构均为 RF = 3,并且表的结构均相同。

所以我的问题如下:

1) 该实用程序从您指定的 cassandra.yaml 中提取源集群信息,但您仍然必须指定 SSTable 的绝对路径。那么,从单个节点运行 SSTableLoader 完成后是否会在目标位置提供整个表?由于目标集群上的 token 范围不同,因此似乎很难验证。

2)datastax 信息显示:

To get the best throughput from SSTable loading, you can use multiple instances of sstableloader to stream across multiple machines. No hard limit exists on the number of SSTables that sstableloader can run at the same time, so you can add additional loaders until you see no further improvement.

这是否意味着对于单个表,我将跨多个源计算机启动 SSTableLoader 的多个实例?或者这只是意味着我可以同时将 SSTableLoader 用于多台机器上的多个不同表。我试图了解他们提到的吞吐量增益是针对单个表还是仅针对正在运行的多个表。

3) 需要进行哪些语法修改才能从快照运行?我拍摄了一个快照并通过运行相同的命令进行测试,但进一步进入表的快照目录,它没有正确解析,它说“快照”是无效的键空间。

无论如何,谢谢希望我的问题足够清楚。

最佳答案

1) 如果您的 RF=3 并且您的集群有 3 个节点,则每个节点都保存全部数据。由于更新尚未传播到所有副本,因此可能仍然存在一些细微的变化。如果集群中的节点数量大于 RF(您的情况是 6 个节点,RF=3),则每个节点保存 50% 的数据组合(不同的 token 范围)。无论如何,您需要在从每个源节点到新集群的目标节点的所有键空间 + 表上运行 sstableloader(假设比例为 1:1)。

2) 是的,您可以在同一个表/键空间上从每个源节点并行运行多个 sstableloader 到其匹配的目标节点。但这也意味着您可以对不同的键空间/表执行此操作,只要最终从所有键空间/表的所有源节点到其匹配的目标节点执行该操作(假设比例为 1:1)。

3) 从备份(快照)恢复是一个不同的过程,不涉及使用sstableloader。您可以阅读更多相关信息here .

还有一个选项可以使用nodetoolfresh将sstables从所有源节点加载到新的目标节点,但仅应在num_nodes=RF时使用。了解更多相关信息here

关于Cassandra 3.11 SSTableLoader 机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52752022/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com