An Essential Guide to installing Cassandra on MacOS, including addressing a SIGSEGV Error in your Java Development Environment
Here’s a quick-start guide to installing Cassandra on MacOS. Adapted in part from this awesome guide by Manish Yadav. If you need help learning CQL check this out (thanks TutorialsPoint!), and here’s a great doc from Apache on designing a schema for your Cassie database- err, keyspace.

First, dependencies:
python 3
pip3 install — upgrade pip setuptools
Java
brew cask install java
brew tap AdoptOpenJDK/openjdk
brew install adoptopenjdk8
Next, check for the java kit you just installed:
/usr/libexec/java_home -V
You can expect to see something like so:
Matching Java Virtual Machines (1):
1.8.0_275, x86_64: “AdoptOpenJDK 8” /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
Note the version number of JDK we just installed, which I have bolded for readability. Next we use the following command to switch the default kit to that version (also bolded below:)
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_275`
Now when you run…
java -version
… you can expect to see something like this:
openjdk version “1.8.0_275”
You should be good to go on installing Cassandra:
Brew install Cassandra
With installation complete, you can now proceed to force Cassandra to run:
Cassandra -f
A lot of information will flash before your eyes as Cassandra connects to your consciousness via hindbrain interface. What you’ll be looking for at the end of the log is:
INFO [main] 2020–12–09 11:04:14,948 CassandraDaemon.java:650 — Startup complete
Startup complete — nice. A couple lines up is another important bit of information:
Starting listening for CQL clients on localhost/127.0.0.1:9042 (unencrypted)…
Note that address. It’s very important. For now, leave this terminal running- this is your JDE process running Cassandra. You can initiate a shutdown sequence via CTRL + C, but be sure to close all DB connections first (or at least I would).
Anyhow: you can now enter the Cassandra shell via:
cqlsh
Next, your task will be to come to terms with CQL, Cassie’s dialect. I found this primer to be very helpful. PROTIP: CQL calls databases “keyspaces.” Here’s a template for writing a schema for your keyspace. You can instantiate a keyspace from a schema like so:
cqlsh -f /Users/dw/project/server/database/schema.cql
Remember that address and port from earlier? You can use those to connect to your Cassandra instance programmatically. For you next node.js project I suggest cassandra-driver:
const cassandra = require(‘cassandra-driver’);
const client = new cassandra.Client({
contactPoints: [‘localhost:9042’],
localDataCenter: ‘datacenter1’,
keyspace: ‘NAME OF YOUR KEYSPACE’
});
client.connect().then(console.log(‘connected to cassie’));
There you go! You are well on your way.

But wait! What if, for example, I close my Cassandra instance and try to start it back up, or I restart my computer, or my computer restarts itself of its own free will, and I get a nasty error like:
A fatal error has been detected by the Java Runtime Environment:
SIGSEGV (0xb) at pc=0x000000010f765ab8, pid=8065, tid=0x0000000000005d03
JRE version: OpenJDK Runtime Environment (8.0_275) (build 1.8.0_275-bre_2020_11_16_16_29-b00)
Java VM: OpenJDK 64-Bit Server VM (25.275-b00 mixed mode bsd-amd64 compressed oops)
Have no fear. First thing you should try is checking that your default JDK hasn’t been reset. Run:
java -version
If no active version is found run:
/usr/libexec/java_home -V
to view your installed JDEs. If your JDK machines are found, use the same command from installation above to select a default from one of those JDK machines:
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_XXX`
Afterward, try restarting Cassandra (cassandra -f). That should work. If that doesn’t work, you may have an issue within the JDK install itself. My solution to this was a quick uninstall-reinstall cycle of all java dependencies:
brew cask uninstall adoptopenjdk8
brew uninstall adoptopenjdk
brew uninstall java
brew cask install java
brew tap AdoptOpenJDK/openjdk
brew install adoptopenjdk8
Afterward just switch your JAVA_HOME to your chosen version as explained above, and you should be good to go. Phew, close one!
