当前位置: 首页 > 知识库问答 >
问题:

使用SStableloader从不同的Cassandra集群加载Cassandra数据

唐宏壮
2023-03-14

我有两台运行Cassandra的不同独立机器,我想将数据从一台机器迁移到另一台机器。

因此,根据数据税文档,我首先在机器1上拍摄了我的Cassandra集群的快照。

然后,我将数据移动到计算机 2,在那里我尝试使用 sstableloader 导入它。

注意:机器2上的keypsace(open_weather)和tablename(raw_weather_data)已创建,并且与机器1上的相同。

我使用的命令如下所示:

bin/sstableloader -d localhost "path_to_snapshot"/open_weather/raw_weather_data

然后得到以下错误:

Established connection to initial hosts
Opening sstables and calculating sections to stream
For input string: "CompressionInfo.db"
java.lang.NumberFormatException: For input string: "CompressionInfo.db"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:276)
    at org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:235)
    at org.apache.cassandra.io.sstable.Component.fromFilename(Component.java:120)
    at org.apache.cassandra.io.sstable.SSTable.tryComponentFromFilename(SSTable.java:160)
    at org.apache.cassandra.io.sstable.SSTableLoader$1.accept(SSTableLoader.java:84)
    at java.io.File.list(File.java:1161)
    at org.apache.cassandra.io.sstable.SSTableLoader.openSSTables(SSTableLoader.java:78)
    at org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:162)
    at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:106)

不幸的是我不知道为什么?

我不确定它是否与该问题有关,但不知何故,与我在机器 1 上已有的 *.db 文件相比,我的 *.db 文件的名称相当“奇怪”。

*.来自计算机1的db文件:

la-53-big-CompressionInfo.db
la-53-big-Data.db
...
la-54-big-CompressionInfo.db
...

*计算机 2 中的.db文件:

open_weather-raw_weather_data-ka-5-CompressionInfo.db
open_weather-raw_weather_data-ka-5-Data.db

我错过了什么?任何帮助都将不胜感激。我也愿意接受任何其他建议。COPY命令很可能无法工作,因为据我所知,它仅限于99999999行。

附言:我不想创建一个太大的帖子,但如果你需要任何进一步的信息来帮助我,请告诉我。

编辑:请注意,我在独立模式下使用Cassandra。

EDIT2:在我的目标机器(机器 2.1.4)上安装相同的版本 2.1.4 后,我仍然收到所有相同的错误。使用 SSTableLoader,我仍然会收到上述错误,并且手动复制文件(如 LHWizard 所述),在再次启动 Cassandra 并执行 SELECT 命令后,我仍然得到空表。

关于初始令牌,如果我在机器1上执行节点环,我会得到一个巨大的令牌列表。我不知道该如何处理这些令牌?

共有1个答案

颜欣怡
2023-03-14

您的数据已经以快照(或备份)的形式存在,我过去所做的如下:

    < li >在恢复节点上安装相同版本的Cassandra < li >在恢复节点上编辑cassandra.yaml确保cluster_name和snitch相同。 < li >编辑种子:列表和原始节点中已更改的任何其他属性。 < li >使用cqlsh DESC密钥空间从原始节点获取架构。 < li >在恢复节点上启动cassandra并导入模式。(步骤6

您不需要批量导入数据,如果您使用的是相同版本的cassandra,它已经是正确的格式,尽管您在最初的问题中没有指定。

 类似资料:
  • 我试图将cassandra集群从专用的DC迁移到EC2。作为开始,我拍了一张桌子的快照。为了加载数据,我在这个过程中尝试了sstableloader,但是我无法从我的cassandra节点指定主机(我正在尝试从我的cassandra节点运行sstable loader)。任何指导都会很有帮助。我用的是cassandra 1.0.1。

  • 我有一个由4个节点组成的Cassandra(2.2.1)集群,由Java客户端应用程序使用。复制因子为3,读写的一致性级别为LOCAL_QUORUM。每个节点大约有5 GB的数据。请求量约为每秒2-4k。几乎没有删除操作,因此创建了少量的墓碑。 一段时间前,我注意到读写性能很差,而且随着时间的推移,性能越来越差——集群变得非常慢。读取(通常)和写入超时已变得非常频繁。硬件不应该引起问题,部署集群的

  • 目前情况: 我通过执行以下命令创建了一个新的Cassandra映像“Cassandra”和一个名为“container-node”的容器: Docker pull Cassandra Docker images grep Cassandra Docker run-d--name cassandra-node--publish 9042:9042 cassandra 连接到容器:docker exe

  • 命令在rest两个节点上运行,一切正常。当我想跑的时候 nodetool状态 命令时,我得到了这个错误消息

  • 我刚接触Cassandra Spark,并尝试使用Spark主集群将数据从文件加载到Cassandra表。我遵循以下链接中给出的步骤 http://docs.datastax.com/en/datastax_enterprise/4.7/datastax_enterprise/spark/sparkImportTxtCQL.html 在第8步,数据显示为整数数组,但当我使用相同的命令时,结果显示为