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

发布于 2024-12-21 15:33:06 字数 3187 浏览 3 评论 0原文

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

  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 after 430959023 bytes out of 778986868 在 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: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 更多

  • 它说它是 Caused by: java.io.EOFException:
  • 是因为损坏的 sstables 吗? 如果是,那么如何删除或修复这些 sstables?
  1. I am having cassandra cluster of 12 nodes on EC2 running cassandra-0.8.2.
    While compaction I got the following exception which caused Seed node to get down.

  2. Below is the exception stack trace.

ERROR [CompactionExecutor:31] 2011-12-16 08:06:02,308 AbstractCassandraDaemon.java (line 139) Fatal exception in thread Thread[CompactionExecutor:31,1,main]
java.io.IOError: java.io.EOFException: EOF after 430959023 bytes out of 778986868
at org.apache.cassandra.io.sstable.SSTableIdentityIterator.(SSTableIdentityIterator.java:149)
at org.apache.cassandra.io.sstable.SSTableIdentityIterator.(SSTableIdentityIterator.java:90)
at org.apache.cassandra.io.sstable.SSTableIdentityIterator.(SSTableIdentityIterator.java:74)
at org.apache.cassandra.io.sstable.SSTableScanner$KeyScanningIterator.next(SSTableScanner.java:179)
at org.apache.cassandra.io.sstable.SSTableScanner$KeyScanningIterator.next(SSTableScanner.java:144)
at org.apache.cassandra.io.sstable.SSTableScanner.next(SSTableScanner.java:136)
at org.apache.cassandra.io.sstable.SSTableScanner.next(SSTableScanner.java:39)
at org.apache.commons.collections.iterators.CollatingIterator.set(CollatingIterator.java:284)
at org.apache.commons.collections.iterators.CollatingIterator.least(CollatingIterator.java:326)
at org.apache.commons.collections.iterators.CollatingIterator.next(CollatingIterator.java:230)
at org.apache.cassandra.utils.ReducingIterator.computeNext(ReducingIterator.java:69)
at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:140)
at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:135)
at org.apache.commons.collections.iterators.FilterIterator.setNextObject(FilterIterator.java:183)
at org.apache.commons.collections.iterators.FilterIterator.hasNext(FilterIterator.java:94)
at org.apache.cassandra.db.compaction.CompactionManager.doCompactionWithoutSizeEstimation(CompactionManager.java:569)
at org.apache.cassandra.db.compaction.CompactionManager.doCompaction(CompactionManager.java:506)
at org.apache.cassandra.db.compaction.CompactionManager$1.call(CompactionManager.java:141)
at org.apache.cassandra.db.compaction.CompactionManager$1.call(CompactionManager.java:107)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at 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)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.io.EOFException: EOF after 430959023 bytes out of 778986868
at org.apache.cassandra.io.util.FileUtils.skipBytesFully(FileUtils.java:229)
at org.apache.cassandra.io.sstable.IndexHelper.skipIndex(IndexHelper.java:63)
at org.apache.cassandra.io.sstable.SSTableIdentityIterator.(SSTableIdentityIterator.java:141)
... 23 more

  • It says it is Caused by: java.io.EOFException:
  • Is it because of the corrupt sstables?
    if it is, then how to remove or repair those sstables?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

妖妓 2024-12-28 15:33:06

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

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

It looks like this is indeed caused by corrupt sstables (which may indicate a hardware problem). My recommendations:

  1. Upgrade to the latest stable 0.8.x version of Cassandra. This will be a drop-in replacement for 0.8.2.
  2. Run "nodetool scrub" on the machine having problems
  3. Review http://www.datastax.com/docs/1.0/install/cluster_init -- I recommend two seed nodes per data center, but remember that a seed node is only consulted when restarting nodes, so it's not a big deal to have one down during normal operation
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文