7
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 工作正常。

任何帮助将不胜感激。

4

2 回答 2

5

问题是 Cassandra 附带的 snappy JAR 文件中没有包含 FreeBSD 库。安装archivers/snappy-java端口,删除Cassandra自带的snappy-java JAR文件,将/usr/local/share/java/classes/snappy-java.jar复制到Cassandra的lib目录下。

于 2013-11-13T02:17:29.653 回答
2

尝试在 FreeBSD 上为 apache kafka 0.8 启用 snappy 压缩时发生了同样的问题,但解决方案是相同的。只需复制/usr/local/share/java/classes/snappy-java.jarkafka/src/core/target/scala-2.8.0目录,重启kafka即可享用!

于 2013-12-03T13:48:54.093 回答