【问题标题】:Cassandra SSTable corruption - How to prevent?Cassandra SSTable 损坏 - 如何预防?
【发布时间】:2023-03-03 02:20:02
【问题描述】:

我们运行两个数据中心的 Cassandra 集群。并使用 Cassandra spark 连接器从 Apache spark 写入数据。

我们有时会在某些节点中看到 SS 表损坏错误。 下面是一个示例异常:

java.lang.RuntimeException:org.apache.cassandra.io.sstable.CorruptSSTableException:损坏:/cassandra/data/data/ams/mydata_attr_v1-de4f9960a01711e783ea2bd3a6beadcf/mc-2925-big-Data.db 在 org.apache。 cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:2490) ~[apache-cassandra-3.9.jar:3.9] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na :1.8.0_72] 在 org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$FutureTask.run(AbstractLocalAwareExecutorService.java:164) ~

我的问题:

  1. SSTable 损坏错误的原因是什么?
  2. 如何防止 SSTable 损坏错误?

我看到了有关如何修复 SStable 错误的文档,但没有明确的文档说明这些错误的原因和预防措施。

【问题讨论】:

    标签: cassandra datastax cassandra-3.0 spark-cassandra-connector


    【解决方案1】:

    由于

    ,可能会发生稳定的损坏
    1. Cassandra 节点因电源故障或手动关闭而突然关闭
    2. 磁盘故障。

    在手动停止 Cassandra 之前,始终尝试通过运行 nodetool drain 优雅地关闭 Cassandra。

    【讨论】:

    • 1 没有发生。没有突然断电或手动关机。是否有任何日志要检查并确保它是由于磁盘故障引起的。 SSTable 错误有时会恢复。而且我在单个键空间中看到 SSTable 错误,即使有其他键空间工作正常。
    • 还有其他原因吗?比如网络问题?我们可以从日志中检测到这些 SSTable 问题的实际根本原因是什么?
    • "已达到最大内存使用量 (512.000MiB),无法分配 1.000MiB 的块" 大量获取这些日志,这会导致 sstable 损坏吗?
    • 我还在所有节点中看到了很多这样的错误“FailureDetector.java:456 - Ignoring interval time”
    • 我建议检查您的磁盘。我认为网络问题不会导致稳定的损坏。尝试找出原因,它是始终在不同硬件中的一个键空间中发生,还是只有一组硬件导致问题。
    猜你喜欢
    • 2016-09-29
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 2015-06-06
    • 2018-09-15
    • 1970-01-01
    相关资源
    最近更新 更多