Reputation: 597
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.
Upvotes: 2
Views: 4282
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
Reputation: 555
I encountered the same issue in Ubuntu 20.04 with Debian installation of Cassandra 3.11. Here's my environment path settings:
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.
Upvotes: 2
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