cassandra - 安装后无法访问 Cassandra NoSQL DB

标签 cassandra cassandra-3.0

我在 My Ubuntu 20.04 中安装了 Cassandra 稳定版本。 Java JDK 11 是我的默认版本。 当我运行以下代码时,出现以下错误。

(base) vijee@vijee-Lenovo-IdeaPad-S510p:~$ sudo nodetool status
ERROR 13:18:40,031 Cannot initialize un-mmaper.  (Are you using a non-Oracle JVM?)  Compacted data files will not be removed promptly.  Consider using an Oracle JVM or using standard disk access mode
java.lang.NoSuchMethodError: 'sun.misc.Cleaner sun.nio.ch.DirectBuffer.cleaner()'
    at org.apache.cassandra.io.util.FileUtils.<clinit>(FileUtils.java:75) ~[apache-cassandra-3.11.9.jar:3.11.9]
    at org.apache.cassandra.utils.FBUtilities.getToolsOutputDirectory(FBUtilities.java:880) ~[apache-cassandra-3.11.9.jar:3.11.9]
    at org.apache.cassandra.tools.NodeTool.printHistory(NodeTool.java:216) ~[apache-cassandra-3.11.9.jar:3.11.9]
    at org.apache.cassandra.tools.NodeTool.execute(NodeTool.java:184) ~[apache-cassandra-3.11.9.jar:3.11.9]
    at org.apache.cassandra.tools.NodeTool.main(NodeTool.java:56) ~[apache-cassandra-3.11.9.jar:3.11.9]
error: null
-- StackTrace --
java.lang.NullPointerException
    at org.apache.cassandra.config.DatabaseDescriptor.getDiskFailurePolicy(DatabaseDescriptor.java:1975)
    at org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable(JVMStabilityInspector.java:102)
    at org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable(JVMStabilityInspector.java:60)
    at org.apache.cassandra.io.util.FileUtils.<clinit>(FileUtils.java:81)
    at org.apache.cassandra.utils.FBUtilities.getToolsOutputDirectory(FBUtilities.java:880)
    at org.apache.cassandra.tools.NodeTool.printHistory(NodeTool.java:216)
    at org.apache.cassandra.tools.NodeTool.execute(NodeTool.java:184)
    at org.apache.cassandra.tools.NodeTool.main(NodeTool.java:56)

我的系统中有以下可用的 Java 版本。

 (base) vijee@vijee-Lenovo-IdeaPad-S510p:~/Downloads/youtubevideos$ sudo update-alternatives --config java
There are 2 choices for alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      manual mode
* 2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode

我知道 Cassandra 仅支持 JDK 8。在一些博客中,他们说我们可以将 Java 8 指定为 Cassandra 的 JAVA_HOME。我应该在哪里更改Cassandra的JAVA_HOME? 我已经在 .bashrc 中将 JAVA_HOME 设置为 JDK 8 以进行 Hadoop 安装。

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH="$PATH:$JAVA_HOME/bin"
export PATH="/home/vijee/anaconda3/bin:$PATH"

export HADOOP_HOME=/home/vijee/hadoop-2.7.7
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH="$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin"
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"

在博客中,每个人都给出了不同的解决方案?我对此很困惑。

  1. 我应该进行哪些更改才能访问 Cassandra?或
  2. 我可以安装 Cassandra 4(测试版)吗?

最佳答案

我在 Ubuntu 20.04 中使用 Debian 安装 Cassandra 3.11 时遇到了同样的问题。这是我的环境路径设置:

enter image description here

我通过 sudo update-alternatives 将默认 JVM 设置为 Java 8 解决了这个问题。然后我执行sudo systemctl restart cassandra后,我就能够成功连接了。

如果您检查 cassandra-env.sh 的内容,看起来它指向 java -version 返回的 JVM 版本。因此,如果它返回版本 11,您的 Cassandra 将无法运行。

enter image description here

关于cassandra - 安装后无法访问 Cassandra NoSQL DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65155224/

相关文章:

java - 如何访问Cassandra节点本地数据

Cassandra 选择性复制

cassandra - Cassandra 的层次结构(树)数据模型和查询

cassandra-3.0 - 在 cassandra 中达到最大内存使用量(536870912 字节),无法分配 1048576 字节的 block

Cassandra native 传输请求调整

cassandra - cassandra 3.0.x 和 3.11.x 版本之间的差异

nosql - Cassandra NOSQL + DNS数据库(全局全域索引数据库)

cassandra - 通过 cqlsh 请求对 Cassandra 执行减法的最佳方法是什么?

cassandra - 如何在 cassandra CQL 3 命令行中自动生成 uuid

cassandra - Spring 数据 : Connect to Cassandra via SSL