Cassandra server in 10 minutes
Want to quickly find out how a Cassandra server feels? In this blog post, we'll
create a single-node Cassandra cluster on an Ubuntu Xenial (16.04) system. It's
not really a ‘cluster’, but you can access the Cassandra shell cqlsh
and try
out all of its commands. Since we are just looking for a quick start, we're
installing one of the latest Cassandra versions – version 3.7. Even more, the
steps here are totally scriptable, so you can just blindly paste the lines and
it'll work! OK let's get started.
Note: Jump straight to the last portion to get all the commands at one place without explanation
Let's go to the temporary directory where we'll download Sun's Java. Here I am downloading Java's ‘Server JRE’ file. I have it hosted in Amazon cloud which you can use. You can bring your own JRE or JDK file too. Just make sure you make appropriate replacements in the command.
cd /tmp
Now actually download the JRE file
wget http://eezydb.s3.amazonaws.com/server-jre-8u101-linux-x64.tar.gz
Create the directory where you want to expand this compressed file
sudo mkdir -p /usr/lib/jvm
Now uncompress it
sudo tar -xzvf server-jre-8u101-linux-x64.tar.gz -C /usr/lib/jvm
Now update system's Java pointers and make this Java the preferred Java to be used
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_101/bin/java" 1
sudo update-alternatives --set java /usr/lib/jvm/jdk1.8.0_101/bin/java
You can check our Java is the preferred Java by checking Java version.
java -version
The output should say something like java version "1.8.0_101"
.
Add Cassandra repositories at appropriate place so that our beloved apt-get
utility can find the place from where to download Cassandra packages.
echo "deb http://www.apache.org/dist/cassandra/debian 37x main" | sudo tee -a /etc/apt/sources.list
echo "deb-src http://www.apache.org/dist/cassandra/debian 37x main" | sudo tee -a /etc/apt/sources.list
Now add the cryptographic keys at proper places. Don't ask me why do we have to do it :)
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 749D6EEC0353B12C
sudo apt-key add ~/.gnupg/pubring.gpg
Now update repository pointers, and install Cassandra!
sudo apt-get --yes --quiet update
sudo apt-get install --yes --quiet cassandra
Cassandra should be installed and running by now. You can check it by checking status of Cassandra service
sudo service cassandra status
Press q
to exit. I don't know why they make us press q
, but anyway..
Cassandra server is running by now. You can check that by checking the status
of nodetool
utility.
sudo nodetool status
The state should be UN
, i.e. ‘U'p and ‘N'ormal. If the output is different,
then wait a few seconds and try again.
There are a few more steps to get the cqlsh
command line utility working.
Let's get them done too.
Install pip
utility which will install Python packages. If you already have
pip
utility, no need to execute this step. Note that this is just one of many
ways to install pip
.
sudo apt-get install --yes --quiet python-pip
Now install pip package cassandra-driver
. You can install it in virtual
environment also. You can safely ignore my last sentence if you have never
heard the term ‘Python virtual environments’ before.
sudo pip install cassandra-driver
I wish everything worked after this, but it won't. Just set this environment
variable and then you should be good to log in into cqlsh
shell.
export CQLSH_NO_BUNDLED=true
Now ‘actually’ log into cqlsh
shell
cqlsh
The output should be something like:
ubuntu@hostname:~$ cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.7 | CQL spec 3.4.2 | Native protocol v4]
Use HELP for help.
cqlsh>
Voila! Note that you need to export CQLSH_NO_BUNDLED=true
in every terminal
shell from where you want to access cqlsh
. So if you log out of the system
and log back in, you need to re-run this command.
Now you can follow any cqlsh
tutorial to try out commands to create
keyspaces, tables, rows, etc.
Everything at one place
You can just paste these lines in a file and run that file as a script, and it'll set everything up for you.
cd /tmp
wget http://eezydb.s3.amazonaws.com/server-jre-8u101-linux-x64.tar.gz
sudo mkdir -p /usr/lib/jvm
sudo tar -xzvf server-jre-8u101-linux-x64.tar.gz -C /usr/lib/jvm
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_101/bin/java" 1
sudo update-alternatives --set java /usr/lib/jvm/jdk1.8.0_101/bin/java
echo "deb http://www.apache.org/dist/cassandra/debian 37x main" | sudo tee -a /etc/apt/sources.list
echo "deb-src http://www.apache.org/dist/cassandra/debian 37x main" | sudo tee -a /etc/apt/sources.list
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 749D6EEC0353B12C
sudo apt-key add ~/.gnupg/pubring.gpg
sudo apt-get --yes --quiet update
sudo apt-get install --yes --quiet cassandra python-pip
sudo pip instlal cassandra-driver
export CQLSH_NO_BUNDLED=true
cqlsh
If you like this, please share! If you have any suggestions, please comment!
Until next time!