Green
Green

Reputation: 597

Unable to access Cassandra NoSQL DB after installation

I installed Cassandra stable version in My Ubuntu 20.04. Java JDK 11 is my default version. When I run the below code I am getting the following error.

(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)

I have Below Java versions available in my system.

 (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

I know Cassandra will support only JDK 8. In some blogs, they say we can assign Java 8 as JAVA_HOME for Cassandra. Where should I do the change of JAVA_HOME for Cassandra? Already in .bashrc I have set JAVA_HOME as JDK 8 for Hadoop installation.

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"

In the blog, everybody gave different solutions? I am largely confused with that.

  1. What changes should I do to access Cassandra? or
  2. Can I install Cassandra 4(beta)?

Upvotes: 2

Views: 4282

Answers (3)

YaEvan
YaEvan

Reputation: 720

install guide for ubuntu18 guide

os: ubuntu18

after install Cassandra 3.11 by apt, then exec

nodetool status

ERROR 14:58:47,350 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.(FileUtils.java:75) 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) error: null -- StackTrace -- java.lang.NullPointerException at org.apache.cassandra.config.DatabaseDescriptor.getDiskFailurePolicy(DatabaseDescriptor.java:2001) 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.(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)

Fix steps

sudo apt install openjdk-8-jdk
sudo update-alternatives --config java

input Selection Number like 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode

java -version

openjdk version "1.8.0_312" ...

sudo systemctl restart cassandra
nodetool status

Upvotes: 2

Mark U
Mark U

Reputation: 555

I encountered the same issue in Ubuntu 20.04 with Debian installation of Cassandra 3.11. Here's my environment path settings:

enter image description here

I resolved it by setting my default JVM to Java 8 via sudo update-alternatives. Then after I executed sudo systemctl restart cassandra, I was able to connect successfully.

If you will check the content of cassandra-env.sh, looks like it's pointing to the JVM version returned by java -version. So if it returns version 11, your Cassandra won't run.

enter image description here

Upvotes: 2

Aaron
Aaron

Reputation: 57748

Assuming Cassandra is already running, check two files:

CASSANDRA_HOME/bin/nodetool
CASSANDRA_HOME/conf/cassandra-env.sh

Check out the program flow from within nodetool. I think it checks whether or not a JAVA_HOME is defined before pulling in vars from cassandra-env.sh.

And you can certainly try Cassandra 4, which should work just fine with Java 11. Just be aware that it is in beta.

Upvotes: 0

Related Questions