而Cassandra在线程CompactionExecutor中压缩致命异常

时间:2011-12-19 06:05:18

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

  1. 我在运行cassandra-0.8.2的EC2上有12个节点的cassandra集群。 压缩时,我得到了以下异常,导致种子节点崩溃。

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

  3.   

    ERROR [CompactionExecutor:31] 2011-12-16 08:06:02,308 AbstractCassandraDaemon.java(第139行)线程中的致命异常线程[CompactionExecutor:31,1,main]   java.io.IOError:java.io.EOFException:在778986868之后的430959023字节之后的EOF           在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)           at 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)           at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:303)           在java.util.concurrent.FutureTask.run(FutureTask.java:138)           at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)           at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)           在java.lang.Thread.run(Thread.java:662)   引起:java.io.EOFException:在778986868中的430959023字节之后的EOF           在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?

1 个答案:

答案 0 :(得分:2)

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

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