【问题标题】:While Cassandra compaction Fatal exception in thread CompactionExecutor而 Cassandra 压缩线程 CompactionExecutor 中的致命异常
【发布时间】:2012-01-23 08:50:37
【问题描述】:
  1. 我在运行 cassandra-0.8.2 的 EC2 上有 12 个节点的 cassandra 集群。 压缩时出现以下异常,导致种子节点宕机。

  2. 下面是异常堆栈跟踪。

错误 [CompactionExecutor:31] 2011-12-16 08:06:02,308 AbstractCassandraDaemon.java(第 139 行)线程 Thread[CompactionExecutor:31,1,main] 中的致命异常 java.io.IOError: java.io.EOFException: EOF 在 778986868 中的 430959023 个字节之后 在 org.apache.cassandra.io.sstable.SSTableIdentityIterator.(SSTableIdentityIterator.java:149) 在 org.apache.cassandra.io.sstable.SSTableIdentityIterator.(SSTableIdentityIterator.java:90) 在 org.apache.cassandra.io.sstable.SSTableIdentityIterator.(SSTableIdentityIterator.java:74) 在 org.apache.cassandra.io.sstable.SSTableScanner$KeyScanningIterator.next(SSTableScanner.java:179) 在 org.apache.cassandra.io.sstable.SSTableScanner$KeyScanningIterator.next(SSTableScanner.java:144) 在 org.apache.cassandra.io.sstable.SSTableScanner.next(SSTableScanner.java:136) 在 org.apache.cassandra.io.sstable.SSTableScanner.next(SSTableScanner.java:39) 在 org.apache.commons.collections.iterators.Collat​​ingIterator.set(Collat​​ingIterator.java:284) 在 org.apache.commons.collections.iterators.Collat​​ingIterator.least(Collat​​ingIterator.java:326) 在 org.apache.commons.collections.iterators.Collat​​ingIterator.next(Collat​​ingIterator.java:230) 在 org.apache.cassandra.utils.ReducingIterator.computeNext(ReducingIterator.java:69) 在 com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:140) 在 com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:135) 在 org.apache.commons.collections.iterators.FilterIterator.setNextObject(FilterIterator.java:183) 在 org.apache.commons.collections.iterators.FilterIterator.hasNext(FilterIterator.java:94) 在 org.apache.cassandra.db.compaction.CompactionManager.doCompactionWithoutSizeEstimation(CompactionManager.java:569) 在 org.apache.cassandra.db.compaction.CompactionManager.doCompaction(CompactionManager.java:506) 在 org.apache.cassandra.db.compaction.CompactionManager$1.call(CompactionManager.java:141) 在 org.apache.cassandra.db.compaction.CompactionManager$1.call(CompactionManager.java:107) 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 在 java.util.concurrent.FutureTask.run(FutureTask.java:138) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 在 java.lang.Thread.run(Thread.java:662) 引起:java.io.EOFException:EOF 在 778986868 中的 430959023 个字节之后 在 org.apache.cassandra.io.util.FileUtils.skipBytesFully(FileUtils.java:229) 在 org.apache.cassandra.io.sstable.IndexHelper.skipIndex(IndexHelper.java:63) 在 org.apache.cassandra.io.sstable.SSTableIdentityIterator.(SSTableIdentityIterator.java:141) ... 23 更多

  • 它说它是由:java.io.EOFException 引起的:
  • 是因为损坏的sstables吗? 如果是,那么如何删除或修复这些 sstables?

【问题讨论】:

    标签: exception cassandra cluster-computing eof cassandra-0.7


    【解决方案1】:

    看起来这确实是由损坏的 sstables 引起的(这可能表明存在硬件问题)。我的建议:

    1. 升级到最新的稳定 0.8.x 版本的 Cassandra。这将是 0.8.2 的直接替代品。
    2. 在有问题的机器上运行“nodetool scrub”
    3. 评论http://www.datastax.com/docs/1.0/install/cluster_init -- 我建议每个数据中心使用两个种子节点,但请记住,仅在重启节点时才会咨询种子节点,因此在正常运行期间关闭一个没什么大不了的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-30
      • 2013-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-03
      • 2018-12-12
      相关资源
      最近更新 更多