Dremio server not starting on macOS

On macOS, latest version, Dremio latest version (re-downloaded today). Oracle JDK.

Dremio.app will open. But will not start (after hitting the “Start” button).

Sun May 13 13:45:47 EDT 2018 Starting dremio on m16.local
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 10240
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1418
virtual memory          (kbytes, -v) unlimited
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by javassist.ClassPool (file:/Applications/Dremio.app/Contents/Java/dremio/jars/3rdparty/javassist-3.19.0-GA.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int)
WARNING: Please consider reporting this to the maintainers of javassist.ClassPool
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Exception in thread "main" java.lang.NoClassDefFoundError: sun/misc/VM
	at com.dremio.common.config.SabotConfig.<clinit>(SabotConfig.java:49)
	at com.dremio.config.DremioConfig.create(DremioConfig.java:221)
	at com.dremio.config.DremioConfig.create(DremioConfig.java:216)
	at com.dremio.dac.server.DACConfig.newConfig(DACConfig.java:195)
	at com.dremio.dac.daemon.DremioDaemon.main(DremioDaemon.java:121)
Caused by: java.lang.ClassNotFoundException: sun.misc.VM
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
	... 5 more

Can you confirm what version of Java you have installed? We currently only support 8 today

I tried it with both 1.8 and 10. Or to be more specific, I have both versions installed and set $JAVA_HOME and $PATH to both options and neither worked. Though I’m not sure how to tell what Dremio is actually using.

Versions:

  • /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
  • /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home

Where does Dremio look for the Java it runs?

Seems like one of the libs was changed from after 8. Are you sure your user is pointing to Java 8? Maybe try uninstalling 10?
It also may be worth mentioning if you first tried starting it with 10 and it errored out, then you try again with 8, there may be a new error (check the logs). Typically if the first startup fails we will require a metadata wipe to make next startup attempt fresh.

I’ve been successfully running Dremio on my macbook pro using docker. It might help you isolate the components.

I initially did not have Java 10 installed. I installed it only after running into trouble, hoping it would kick Dremio out of whatever rut it became stuck in.

When Dremio starts on macOS, how does it obtain the Java it runs? Does it run whatever Java calling 'java -version' in a Terminal would run? Does it refer to $JAVA_HOME? Does it look in known locations in system Library folders? Does it run some JRE that comes with the Dremio install, i.e., in /Applications/Dremio.app/Contents/PlugIns/Java.runtime/ ?

Dremio application would use whatever java version is the default on your system. You can change the default for Dremio by modifying /Applications/Dremio.app/Contents/Java/dremio/conf/dremio-env and adding a line JAVA_HOME=<path/to/java runtime> at the bottom of the file. For example you can add JAVA_HOME=$(/usr/libexec/java_home -v 1.8) to select the latest Java8 version.

In case its useful, there’s now an official Docker image: Official Docker Image for Dremio

1 Like

For others having this issue - this advice worked for me. I had installed
brew cask install homebrew/cask-versions/adoptopenjdk8
because I also wanted to try out Apache Drill and it required this version so this was the jdk8 it needed.