问题产生

服务器重启,导致cassandra损坏,整个集群不可用。所使用的cassandra为2.1.9版本。

问题描述

运行启动命令,报错如下:
DEBUG :: All segments have been unmapped successfully
INFO :: Opening ./../data/data/system/size_estimates-618f817b005f3678b8a453f3930b8e86/system-size_estimates-ka- ( bytes)
ERROR :: Exiting forcefully due to file system exception on startup, disk failure policy "stop"
org.apache.cassandra.io.sstable.CorruptSSTableException: java.io.EOFException
at org.apache.cassandra.io.compress.CompressionMetadata.<init>(CompressionMetadata.java:) ~[apache-cassandra-2.1..jar:2.1.]
at org.apache.cassandra.io.compress.CompressionMetadata.create(CompressionMetadata.java:) ~[apache-cassandra-2.1..jar:2.1.]
at org.apache.cassandra.io.util.CompressedSegmentedFile$Builder.metadata(CompressedSegmentedFile.java:) ~[apache-cassandra-2.1..jar:2.1.]
at org.apache.cassandra.io.util.CompressedPoolingSegmentedFile$Builder.complete(CompressedPoolingSegmentedFile.java:) ~[apache-cassandra-2.1..jar:2.1.]
at org.apache.cassandra.io.util.SegmentedFile$Builder.complete(SegmentedFile.java:) ~[apache-cassandra-2.1..jar:2.1.]
at org.apache.cassandra.io.sstable.SSTableReader.load(SSTableReader.java:) ~[apache-cassandra-2.1..jar:2.1.]
at org.apache.cassandra.io.sstable.SSTableReader.load(SSTableReader.java:) ~[apache-cassandra-2.1..jar:2.1.]
at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:) ~[apache-cassandra-2.1..jar:2.1.]
at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:) ~[apache-cassandra-2.1..jar:2.1.]
at org.apache.cassandra.io.sstable.SSTableReader$.run(SSTableReader.java:) ~[apache-cassandra-2.1..jar:2.1.]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:) [na:1.8.0_45]
at java.util.concurrent.FutureTask.run(FutureTask.java:) [na:1.8.0_45]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:) [na:1.8.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:) [na:1.8.0_45]
at java.lang.Thread.run(Thread.java:) [na:1.8.0_45]
Caused by: java.io.EOFException: null
at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:) ~[na:1.8.0_45]
at java.io.DataInputStream.readUTF(DataInputStream.java:) ~[na:1.8.0_45]
at java.io.DataInputStream.readUTF(DataInputStream.java:) ~[na:1.8.0_45]
at org.apache.cassandra.io.compress.CompressionMetadata.<init>(CompressionMetadata.java:) ~[apache-cassandra-2.1..jar:2.1.]
... common frames omitted
DEBUG :: INDEX LOAD TIME for ./../data/data/system/size_estimates-618f817b005f3678b8a453f3930b8e86/system-size_estimates-ka-: ms.
DEBUG :: Load metadata for ./../data/data/system/size_estimates-618f817b005f3678b8a453f3930b8e86/system-size_estimates-ka-
INFO :: Opening ./../data/data/system/size_estimates-618f817b005f3678b8a453f3930b8e86/system-size_estimates-ka- ( bytes)
DEBUG :: INDEX LOAD TIME for ./../data/data/system/size_estimates-618f817b005f3678b8a453f3930b8e86/system-size_estimates-ka-: ms.

解决方案

1. 在正常节点上执行(节点需要启动)

./nodetool ring | grep 192.168.66.149 | awk '{print $NF ","}' | xargs
 

返回如下:

-, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -, -,

2. 在损坏节点上修改配置文件:cassandra.yaml,并加入如下配置项:

auto_bootstrap: false

initial_token: -, -, -, -, -, -, -, -, -, -,......(后面的省略...)
 
注意:initial_token的取值为上一步骤的返回值。

3. 删除数据盘下system目录

如/usr/local/cassandra2/apache-cassandra-2.1.9/data/data/system

4. 启动cassandra

./cassandra
./cassandra
 
启动过程可能会报错,但会继续重建system库,只要能启动成功加入集群就算正常。

5. 修复数据

运行nodetool工具:
nodetool repair

6. 将配置项改回原样并重启

本解决方案参考自:/usr/local/cassandra2/apache-cassandra-2.1.9/data/data/system

 
 
 
 

解决异常断电导致的: CorruptSSTableException: java.io.EOFException的更多相关文章

  1. Java Scoket之java.io.EOFException解决方案

    Java Scoket之java.io.EOFException解决方案   Socket接收数据的时候,常常会抛出java.io.EOFException异常,也没有明确的原因和提示,在网上搜搜,很 ...

  2. 我的Java开发学习之旅------>Java使用ObjectOutputStream和ObjectInputStream序列号对象报java.io.EOFException异常的解决方法

    今天用ObjectOutputStream和ObjectInputStream进行对象序列化话操作的时候,报了java.io.EOFException异常. 异常代码如下: java.io.EOFEx ...

  3. socket编程报异常java.io.EOFException

    一个客户端连接服务器的小程序,服务器端可以正常读取客户端发来的数据 但是当客户端关闭时,服务端也关闭了,并且抛出如下的异常: java.io.EOFException at java.io.DataI ...

  4. java.io.EOFException解决

    主要错误提演示样例如以下: 严重: IOException while loading persisted sessions: java.io.EOFException 严重: Exception l ...

  5. Tomcat:IOException while loading persisted sessions: java.io.EOFException 解决

    转自:http://www.blogjava.net/apple0668/archive/2007/10/12/152383.html Tomcat启动时如下错误: 严重: IOException w ...

  6. hadoop异常: java.io.EOFException: Unexpected end of input stream

    执行hadoop任务时报错: -- ::, INFO [main] org.apache.hadoop.mapred.MapTask: Processing --//app1@flume23_1000 ...

  7. Tomcat:IOException while loading persisted sessions: java.io.EOFException解决手记

    原文:http://blog.csdn.net/lifuxiangcaohui/article/details/37659905 一直用tomcat一段时间都正常无事,最近一次启动tomcat就发生以 ...

  8. 启动项目时出现java.io.EOFException异常。

    错误: 2018-4-18 10:55:54 org.apache.catalina.session.StandardManager doLoad 严重: IOException while load ...

  9. storm supervisor启动报错java.lang.RuntimeException: java.io.EOFException

    storm因机器断电或其他异常导致的supervisor意外终止,再次启动时报错: 1. 2013-09-24 09:15:44,361 INFO [main] daemon.supervisor ( ...

随机推荐

  1. (小规模)b牌棋盘完美覆盖数

    (小规模)b牌棋盘完美覆盖数 考虑一个普通的国际象棋棋盘,它被分成8*8(8行8列)的64个正方形.设有形状一样的多米诺骨牌,每张牌恰好覆盖棋盘上相邻的两个方格(即1*2的骨牌).那么能否把32个这样 ...

  2. 用js给循环的列表添加click事件

    纠结了两天终于搞定了,首先id这个东西必不可少,这个时候不能用onclik事件,而是需要使用代理事件. 比如说,这里有个列表如下: <ul> <li></li> & ...

  3. MYSQL复习笔记10-连接

    Date: 20140219Auth: Jin 一.介绍连接是二元运算,可以对两个表或多个表进行查询.T-SQL中分两大类,一是符合SQL标准的连接谓词表示形式,二是T-SQL扩展的使用关键字JOIN ...

  4. NHibernate官方文档中文版-框架架构(Architecture)

    总体概览 一个非常高层次的NHibernate架构: 这个图展示了NHibernate使用数据库和配置信息来为应用程序提供持久化服务(和持久化对象). 我们想展示一个更加详细的运行时架构.但是NHib ...

  5. Multivariate Adaptive Regression Splines (MARSplines)

    Introductory Overview Regression Problems Multivariate Adaptive Regression Splines Model Selection a ...

  6. Linq 时间参数的一个坑

    背景:查询某个字段大于系统时间的数据 两种写法: 1.DataTime now=DateTime.Now; var result=dbContext.Table1.Created>now 2.  ...

  7. [Android Pro] Android学习——在线查看android源代码的3种方式

    原文:http://blog.csdn.net/chuekup/article/details/8067075 1. https://github.com/android 2. http://grep ...

  8. Java集合类理解

    深入Java集合学习系列:http://zhangshixi.iteye.com/blog/674856 http://blog.csdn.net/shf4715/article/details/47 ...

  9. [转]Data Flow How-to Topics (SSIS)

    本文转自:http://technet.microsoft.com/en-us/library/ms137612(v=sql.90).aspx This section contains proced ...

  10. longest-repeating-character-replacement(难)

    用sliding window的方法,之前还有个k不同元素好像也是类似的思路.有时间可以去复习下. https://leetcode.com/problems/longest-repeating-ch ...