【问题标题】:Cassandra SStableLoader Streaming Error Broken pipeCassandra SStableLoader Streaming Error Broken pipe
【发布时间】:2017-08-18 04:17:30
【问题描述】:

我正在尝试使用 SSTableLoader 将表从 Cassandra 2.1 集群迁移到 Cassandra 3.11,虽然成功加载了一些 SStable,但我一直遇到其他奇怪的错误。 我试图重复加载相同的 SSTables,有时我得到一个通用的

java.util.concurrent.ExecutionException: org.apache.cassandra.streaming.StreamException:流失败

其他时间

org.apache.cassandra.io.FSReadError: java.io.IOException: Broken pipe

但是,如果我检查 system.log,我总是会发现这个错误:

java.lang.IllegalArgumentException:在中找不到列名组件 单元格名称

尝试搜索上述错误,未找到任何有用的详细信息。

我在 2.x 集群中的表上尝试了 nodetool 修复,但几个小时后它看起来仍然没有完成。我会尝试使用 nodetool scrub 但不确定这是否会导致数据丢失。

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    问题在于 Cassandra 3.0 中的 sstable 格式发生了变化,因此您不能只将 2.1 格式的 sstable 流式传输到 3.x 节点作为 sstable 格式。

    官方(更好的)方法是,您首先需要将节点升级到更新的 C* 版本,然后运行 ​​nodetool upgradesstables -a

    【讨论】:

    • 我无法将 2.1 节点升级到 3.x,我将它们复制到 3.11 节点并尝试加载它们,如果我无法先将 sstables 导入 3.11,我该如何升级它们?我也在官方文档中发现了这一点:在 Cassandra 3.0 之前的版本中创建的批量加载 SSTables 仅在 Cassandra 3.0.5 及更高版本中受支持。这表明应该支持导入,并且确实可以导入一些sstables。
    • 这里有一个更新,我成功地将 50 多个 sstable 从一个数据库加载到另一个数据库,只有 2 个列存储会给出这个错误,而不是所有的 sstable,只是其中的大部分。
    猜你喜欢
    • 2021-08-24
    • 1970-01-01
    • 2020-01-24
    • 2018-12-16
    • 2017-05-13
    • 2016-05-08
    • 2015-06-29
    • 1970-01-01
    • 2016-10-03
    相关资源
    最近更新 更多