Linux x86_64上的Cassandra启动错误1.2.6

试图从最新的稳定版本在Linux上安装cassandra – http://cassandra.apache.org/download/ – 1.2.6

我已经修改了cassndra.yaml指向一个自定义目录而不是/ var,因为我没有/ var的写权限

我在启动时看到这个错误。 由于发布版似乎相对较新,因此无法在Google上find任何答案。 只是在这里张贴,以防万一我的一个愚蠢的错误。

相同的分配文件在我的macos x86_64机器上正常工作。

INFO 19:24:35,513 Not using multi-threaded compaction java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.xerial.snappy.SnappyLoader.loadNativeLibrary(SnappyLoader.java:322) at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:229) at org.xerial.snappy.Snappy.<clinit>(Snappy.java:48) at org.apache.cassandra.io.compress.SnappyCompressor.create(SnappyCompressor.java:45) at org.apache.cassandra.io.compress.SnappyCompressor.isAvailable(SnappyCompressor.java:55) at org.apache.cassandra.io.compress.SnappyCompressor.<clinit>(SnappyCompressor.java:37) at org.apache.cassandra.config.CFMetaData.<clinit>(CFMetaData.java:82) at org.apache.cassandra.config.KSMetaData.systemKeyspace(KSMetaData.java:81) at org.apache.cassandra.config.DatabaseDescriptor.loadYaml(DatabaseDescriptor.java:468) at org.apache.cassandra.config.DatabaseDescriptor.<clinit>(DatabaseDescriptor.java:123) at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:211) at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:441) at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:484) Caused by: java.lang.UnsatisfiedLinkError: /tmp/snappy-1.0.5-libsnappyjava.so: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /tmp/snappy-1.0.5-libsnappyjava.so) at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary1(Unknown Source) at java.lang.ClassLoader.loadLibrary0(Unknown Source) at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.load0(Unknown Source) at java.lang.System.load(Unknown Source) at org.xerial.snappy.SnappyNativeLoader.load(SnappyNativeLoader.java:39) ... 17 more 

请build议可能是什么问题。 当我发现任何新东西的时候,我还会在这个页面上添加更多的发现。

看着这个线程 – cassandra 1.2无法在freebsd中初始化

不过还是看问题。

我试过设置

 internode_compression: none 

但是在日志中仍然看到相同的错误。

Solutions Collecting From Web of "Linux x86_64上的Cassandra启动错误1.2.6"

它看起来像你(一)运行在一个不兼容的glibc系统为snappy 1.0.5和(b)从早期版本的工作升级。

如果您在非Snappy兼容系统上启动Cassandra,则会检测到问题并跳过压缩。 但是当你升级并且你压缩了系统表时,Cassandra没有什么能做的。

你可以降级,可以升级glibc,也可以降级,切换到lz4并运行升级稳定,然后再升级。

编辑:你也可能只能放弃旧的1.0.4 snappy,而不是,并删除1.0.5。

编辑2:这是RHEL 5吗? 几乎任何现代应该是快速1.0.5兼容。

以防万一任何人遇到这个职位与配置我有:

  • rhel 5
  • cassandra 2.0.2

我有一个启动问题 – 版本`GLIBCXX_3.4.9'找不到

建议解决方案:

  1. 在rhel 5上编译snappy 1.1.0(我想它可能是1.0.5)。
  2. 用上面的版本替换原来的cassandra 2.0.2发行版中的snappy 1.0.5
  3. 依次重新启动(先种子,然后再加入其他节点)

这似乎是绊倒了这个问题。

希望未来的cassandra版本将有处理各种操作系统版本的指令。 理论上这应该工作…

 INFO 23:49:07,006 Enqueuing flush of Memtable-local@926294408(43/430 serialized/live bytes, 2 ops) INFO 23:49:07,006 Writing Memtable-local@926294408(43/430 serialized/live bytes, 2 ops) INFO 23:49:07,019 Completed flushing /var/lib/cassandra/data/system/local/system-local-jb-10-Data.db (70 bytes) for commitlog position ReplayPosition(segmentId=1383810511586, position=220516) INFO 23:49:07,030 Enqueuing flush of Memtable-local@1880462876(10086/100860 serialized/live bytes, 257 ops) INFO 23:49:07,030 Writing Memtable-local@1880462876(10086/100860 serialized/live bytes, 257 ops) INFO 23:49:07,042 Completed flushing /var/lib/cassandra/data/system/local/system-local-jb-11-Data.db (5280 bytes) for commitlog position ReplayPosition(segmentId=1383810511586, position=232503) INFO 23:49:07,064 Node myeng11.mycompany.com/10.65.0.201 state jump to normal INFO 23:49:07,067 Startup completed! Now serving reads.