安装后无法访问Cassandra NoSQL DB
我在Ubuntu 20.04中安装了Cassandra稳定版。JavaJDK11是我的默认版本。 当我运行下面的代码时,我得到了以下错误安装后无法访问Cassandra NoSQL DB,cassandra,cassandra-3.0,Cassandra,Cassandra 3.0,我在Ubuntu 20.04中安装了Cassandra稳定版。JavaJDK11是我的默认版本。 当我运行下面的代码时,我得到了以下错误 (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
(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)
我知道Cassandra只支持JDK 8。在一些博客中,他们说我们可以将Java8指定为Cassandra的Java_主页。我应该在哪里为卡桑德拉更换JAVA_HOME?
在.bashrc中,我已经为Hadoop安装将JAVA_HOME设置为JDK 8
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"
在博客里,每个人都给出了不同的解决方案?我基本上对此感到困惑
假设Cassandra已经在运行,请检查两个文件:
CASSANDRA_HOME/bin/nodetool
CASSANDRA_HOME/conf/cassandra-env.sh
从nodetool
中查看程序流。我认为在从cassandra env.sh
中引入变量之前,它会检查是否定义了JAVA\u HOME
您当然可以尝试Cassandra4,它在Java11中应该可以正常工作。请注意,它是beta版。我在Ubuntu 20.04中遇到了与Debian安装Cassandra 3.11相同的问题。以下是我的环境路径设置: 我通过
sudo-update-alternations
将默认JVM设置为Java8解决了这个问题。然后在我执行了sudo systemctl restart cassandra之后,我就能够成功地连接了
如果您要检查cassandra-env.sh的内容,它似乎指向由java-version
返回的JVM版本。因此,如果它返回版本11,您的Cassandra将无法运行
我更改了java版本,然后重新启动了Cassandra,然后它正在运行,过了一段时间,当我检查状态时,它变为Active:Active(已退出)。它不再跑了。
CASSANDRA_HOME/bin/nodetool
CASSANDRA_HOME/conf/cassandra-env.sh