我们运行一个两个数据中心的Cassandra集群。并使用Cassandra spark连接器从Apache spark写入数据。
我们有时会在某些节点看到SS表损坏错误。下面是一个异常示例:
. lang。RuntimeException: org.apache.cassandra.io.sstable.CorruptSSTableException: corruptsstableexception:/cassandra/data/data/ams/mydata_attr_v1-de4f9960a01711e783ea2bd3a6beadcf/c-2925- large - data .db at 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] at org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$FutureTask.run(AbstractLocalAwareExecutorService.java:164) ~
我的问题:
- SSTable损坏错误的原因是什么?
- 如何防止SSTable损坏错误?
我看到了关于如何修复SStable错误的文档,但是没有关于这些错误的原因和防止它们的明确文档。
由于
- Cassandra节点因断电或人为关机而突然关机
- 磁盘失败。
在手动停止Cassandra之前,总是尝试通过运行nodetool drain
来优雅地关闭Cassandra。