cassandra 1.2 无法在 freebsd 中初始化 snappy

标签 cassandra snappy

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 压缩的 native 库 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 工作正常。

任何帮助将不胜感激。

最佳答案

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

关于cassandra 1.2 无法在 freebsd 中初始化 snappy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17206891/

相关文章:

scala - native snappy 库不可用

python - 如何在 Snap.py 中复制 Graph 对象?

Cassandra读取一致性一,受其他节点影响?

php - Cassandra 还是 mysql 5?哪个对 future 有好处?

cassandra - 设置 `require_client_auth` 的功能

java - Spark Datastax Java API 选择语句

rust - 对缓冲区使用 Snappy 压缩

hadoop - 如何在不使用 Hadoop 的情况下读取 HDFS 上的 Snappy 压缩文件?

Cassandra 自定义二级索引

docker - 无法准备上下文 : unable to evaluate symlinks in Dockerfile path: lstat/var/lib/snapd/void/Dockerfile: no such file or directory