我知道过类似的问题,但我认为我的用例非常具体,我找不到任何答案。Cassandra数据从1.2迁移到3.0.2
在生产中,我们使用Cassandra 1.2和ByteOrderPartitioner在6节点集群中以Priam作为种子管理工具。我们最近升级了所有依赖关系,并试图使用Murmur分区器迁移到Cassandra 3.0.2,为了实现向后兼容性,我们需要启用节点集群。同时我们也希望从Priam迁移出来。 我能够设置新的群集,但在数据迁移过程中遇到很多问题。我试过3两件事:
1)使用拷贝命令:失败时的行数较大
2)SSTable2Json:卡桑德拉3.0.2已停止支持SSTable2Json
3)SSTableloader:失败我想是因为源和目标
了java.lang.RuntimeException的不同版本卡桑德拉:在org.apache.cassandra.tools.BulkLoader $ ExternalClient.init(BulkLoader.java:233) 在组织 :无法检索端点范围。 apache.cassandra.io.sstable.SSTableLoader.stream( SSTableLoader.java:119) at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:67) 引起:InvalidRequestException(原因:未配置的表schema_columnfamilies) at org.apache.cassandra.thrift.Cassandra $ (org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78) at org.apache.cassandra.thrift.Cassandra $ Client.recv_execute_cql3_query(Cassandra.java:1562)org.apache.thrift.TServiceClient.receiveBase(Cassandra.java:1578) at org.apache.cassandra.thrift.Cassandra $ Client.execute_cql3_query(Cassandra.java:1547) at org.apache.cassandra.tools.BulkLoader $ ExternalClient.init(BulkLoader.java:225) ... 2 more
Righ现在我有点卡住了,对此的任何帮助将深受赞赏。如果您需要更多详细信息,请告诉我。
感谢Jaya,我仍在探索两种选择: 1)使用CQLSSTableWriter 2)在新集群中创建模式,编写将一组数据直接复制到另一个集群的Java代码。由于数据并不庞大(大约100GB),我更倾向于第二种选择,因为我已经熟悉在cassandra中写入数据的代码。对此有任何想法。 –
以我的观点来看,第二种方法比第一种方法需要更多的时间。另一个预防措施是使用重试逻辑进行写入过程。因为如果有任何写入失败,出现任何异常,那么您需要从第一个写入过程开始。 –
对于第二个选项,还有一点是,我不确定cassandra是否会处理100GB的所有数据。由于以100GB的速度写入,可能会带来麻烦。从cassandra文档中,它必须处理所有100GB数据,而不会失败。还没有尝试过,但几乎你正在给cassandra做压力测试。但是如果你选择第一种选择,你就不会陷入任何陷阱。如果可能的话,一旦完成就取回结果,这对未来可能有所帮助。 –