我一直在使用 SSTableLoader 实用程序在两个不同的 Cassandra 集群之间批量传输数据,我想知道是否有其他人遇到过同样的问题。源集群有数据,目标没有。
我已经阅读了有关实用程序详细信息的 datastax 页面,但我仍然对它的工作原理有一些未解决的问题。
我在源集群的活动节点上使用该实用程序,命令遵循以下格式:
sstableloader -d target.host.ip -v -f /etc/cassandra/cassandra.yaml /cassandra/data/keyspace1/table1-uuid
这两个集群都设置有 256 个 vnode,每个集群中有 6 个节点。两种环境中的架构都是 RF = 3,并且表的结构都相同。
所以我的问题如下:
1) 该实用程序从您指定的 cassandra.yaml 中提取源集群信息,但您仍然必须指定 SSTables 的绝对路径。那么从单个节点运行 SSTableLoader 是否会在完成后给我整个目标表?由于目标集群的令牌范围不同,因此似乎很难验证。
2)数据税信息说:
为了从 SSTable 加载中获得最佳吞吐量,您可以使用多个 sstableloader 实例在多台机器上进行流式传输。sstableloader 可以同时运行的 SSTable 数量没有硬性限制,因此您可以添加额外的加载器,直到您没有看到进一步的改进。
这是否意味着对于单个表,我将跨多个源计算机启动多个 SSTableLoader 实例?还是仅仅意味着我可以在多台机器上同时对多个不同的表使用 SSTableLoader。我试图了解他们提到的吞吐量增益是针对单个表还是仅针对飞行中的多个表。
3)从快照运行需要什么语法修改?我拍摄了一个快照并通过运行相同的命令进行测试,但进一步深入到表的快照目录中,它没有正确解析它说“快照”是一个无效的键空间。
无论如何,谢谢希望我对我的问题足够清楚。