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 压缩的本机库 snappy-1.0.4.1-libsnappyjava.so 包含在 snappy-java-1.0.4.1.jar 文件中。当 JVM 初始化 JAR 时,该库被添加到默认临时目录。如果使用 noexec 选项挂载默认临时目录,则会导致上述异常。
我在 cassandra.in.sh 中添加了 JVM_OPTS=-Dorg.xerial.snappy.tempdir=/tmp ,但它仍然不起作用。我也尝试直接指定临时目录
./bin/cassandra -Dorg.xerial.snappy.tempdir=/tmp
在同一台机器上 cassandra 版本 1.0.12 工作正常。
任何帮助将不胜感激。