ERROR [WRITE-/10.10.35.30] 2013-06-19 23:15:56,907 CassandraDaemon.java (line 175) Exception in thread Thread[WRITE-/10.10.35.30,5,main]
java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappy
at org.xerial.snappy.SnappyOutputStream.<init>(SnappyOutputStream.java:79)
at org.xerial.snappy.SnappyOutputStream.<init>(SnappyOutputStream.java:66)
at org.apache.cassandra.net.OutboundTcpConnection.connect(OutboundTcpConnection.java:341)
at org.apache.cassandra.net.OutboundTcpConnection.run(OutboundTcpConnection.java:143)
在查找已知问题时,我发现以下内容:snappy-java-1.0.4.1.jar 文件中包括用于Snappy压缩的原生库 snappy-1.0.4.1-libsnappyjava.so。当JVM初始化该JAR时,该库会被添加到默认临时目录中。如果默认临时目录被挂载为 noexec 选项,则会导致上述异常。
我在 cassandra.in.sh 中添加了 JVM_OPTS=-Dorg.xerial.snappy.tempdir=/tmp,但仍然无法解决问题。我还尝试直接指定临时目录。
./bin/cassandra -Dorg.xerial.snappy.tempdir=/tmp
在同一台机器上,Cassandra版本1.0.12运行良好。
任何帮助都将不胜感激。