Apache Cassandra was initially released in 2008 by the Apache Software Foundation. It is a free, open-source, NoSQL type database management system that is designed to address large amounts of information that can be shared across multiple servers and, it provides high availability, so it eliminates the single point of failure issues! It has excellent fault tolerances when operating on basic hardware or in a larger cloud infrastructure. It is used by high-profile companies like Constant Contact, CERN, Comcast, eBay, GitHub, GoDaddy, Hulu, Instagram, Intuit, Netflix, Reddit, The Weather Channel and a multitude of other business concerns. They selected to use Cassandra as it’s a wise choice to host your decentralized, NoSQL database solution.
Let’s get started with the installation. In this article, we’ll be installing Apache Cassandra on a CentOS 7 VPS server.
We need to verify a few items and then install Java as Cassandra was developed using the Java programming language.
First, let’s verify our version of CentOS
[root@test yum.repos.d]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
Next, make sure your server is up to date with the latest software
yum -y update
Step 1: Install Java
Now that we have those prerequisites out of the way let’s install Java. We’re going to use the newer OpenJDK install (Open Java Development Kit) because, the earlier Oracle JDK is EOL (end of life) as of Jan. 2019 and will no longer provide any updates unless you purchase a business license. As Oracle announced, “Public updates for Oracle Java SE 8 released after January 2019 will not be available for business, commercial, or production use without a commercial license”. However, the OpenJDK is completely open source and can be used freely.
There are no radical technical differences between the two software titles since the builds for the Oracle JDK is based on OpenJDK. All the major Linux distributions (Fedora, Ubuntu, Red Hat) provide OpenJDK as the default Java SE implementation, so we’ll trust their judgment in choosing that platform as well.
yum -y install java
Now, let’s quickly check the version of java we just installed
java -version openjdk version "1.8.0_201" OpenJDK Runtime Environment (build 1.8.0_201-b09) OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)
Step 2: Adding the Cassandra Repo
Ok, time to add the Cassandra repo to the server. We’ll be using VIM (because what other awesome editor is there?)
vim /etc/yum.repos.d/cassandra.repo (click insert on your keyboard and then copy/paste the info below into the repo file) ===================================================== [cassandra] name=Apache Cassandra baseurl=https://www.apache.org/dist/cassandra/redhat/311x/ gpgcheck=1 repo_gpgcheck=1 gpgkey=https://www.apache.org/dist/cassandra/KEYS ===================================================== (after that, click on the escape key to end editing the file)
Once complete, use ‘:wq’ to save the file.
Ok, let’s update our system again, so all the changes are picked up.
[root@new ~]# yum -y update Loaded plugins: fastestmirror, priorities Loading mirror speeds from cached hostfile * base: mirrors.liquidweb.com * extras: mirrors.liquidweb.com * updates: mirrors.liquidweb.com cassandra/signature | 833 B 00:00:00 Retrieving key from https://www.apache.org/dist/cassandra/KEYS Importing GPG key 0xF2833C93: Userid : "Eric Evans <firstname.lastname@example.org>" Fingerprint: cec8 6bb4 a0ba 9d0f 9039 7cae f835 8fa2 f283 3c93 From : https://www.apache.org/dist/cassandra/KEYS cassandra/signature | 2.9 kB 00:00:00 !!! cassandra/primary_db | 4.2 kB 00:00:00 No packages marked for update
Step 3: Install Cassandra
Now, time to install Cassandra!
[root@new ~]# yum install cassandra Dependencies Resolved ============================================================================================================================== Package Arch Version Repository Size ============================================================================================================================== Installing: cassandra noarch 3.11.4-1 cassandra 28 M Transaction Summary ============================================================================================================================== Install 1 Package Total download size: 28 M Installed size: 38 M Is this ok [y/d/N]: y Downloading packages: warning: /var/cache/yum/x86_64/7/cassandra/packages/cassandra-3.11.4-1.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID fe4b2bda: NOKEY Public key for cassandra-3.11.4-1.noarch.rpm is not installed cassandra-3.11.4-1.noarch.rpm | 28 MB 00:00:00 Retrieving key from https://www.apache.org/dist/cassandra/KEYS Importing GPG key 0xF2833C93: Userid : "Eric Evans <email@example.com>" Fingerprint: cec8 6bb4 a0ba 9d0f 9039 7cae f835 8fa2 f283 3c93 From : https://www.apache.org/dist/cassandra/KEYS Is this ok [y/N]: y Importing GPG key 0x8D77295D: Userid : "Eric Evans <firstname.lastname@example.org>" Fingerprint: c496 5ee9 e301 5d19 2ccc f2b6 f758 ce31 8d77 295d From : https://www.apache.org/dist/cassandra/KEYS Is this ok [y/N]: y Importing GPG key 0x2B5C1B00: Userid : "Sylvain Lebresne (pcmanus) <email@example.com>" Fingerprint: 5aed 1bf3 78e9 a19d ade1 bcb3 4bd7 36a8 2b5c 1b00 From : https://www.apache.org/dist/cassandra/KEYS Is this ok [y/N]: y Importing GPG key 0x0353B12C: Userid : "T Jake Luciani <firstname.lastname@example.org>" Fingerprint: 514a 2ad6 31a5 7a16 dd00 47ec 749d 6eec 0353 b12c From : https://www.apache.org/dist/cassandra/KEYS Is this ok [y/N]: y Importing GPG key 0xFE4B2BDA: Userid : "Michael Shuler <email@example.com>" Fingerprint: a26e 528b 271f 19b9 e5d8 e19e a278 b781 fe4b 2bda From : https://www.apache.org/dist/cassandra/KEYS Is this ok [y/N]: y Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : cassandra-3.11.4-1.noarch 1/1 Verifying : cassandra-3.11.4-1.noarch 1/1 Installed: cassandra.noarch 0:3.11.4-1 Complete!
Step 4: Start Cassandra
Now, let's start/enable the Cassandra service:
[root@new ~]# systemctl enable cassandra cassandra.service is not a native service, redirecting to /sbin/chkconfig. Executing /sbin/chkconfig cassandra on[root@new ~]# systemctl start cassandra
Next, we’ll check to see if Cassandra is running.
[root@new ~]# nodetool status Datacenter: datacenter1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 127.0.0.1 103.67 KiB 256 100.0% cda3cdf2-e210-4736-a36c-4bad87eadf7b rack1
Perfect! Cassandra is now installed.
(As an aside, Cassandra's data is kept in the /var/lib/cassandra folder)
[root@new ~]# cd /var/lib/cassandra [root@new cassandra]# ll total 16 drwxr-xr-x 2 cassandra cassandra 4096 Mar 28 15:30 commitlog drwxr-xr-x 7 cassandra cassandra 4096 Mar 28 15:30 data drwxr-xr-x 2 cassandra cassandra 4096 Feb 2 18:48 hints drwxr-xr-x 2 cassandra cassandra 4096 Feb 2 18:48 saved_caches
The configuration files are kept in the /etc/cassandra folder.
[root@new cassandra]# vim /etc/cassandra/ conf/ default.conf/[root@new cassandra]# vim /etc/cassandra/conf/ cassandra-env.sh cassandra.yaml.orig logback.xml cassandra-env.sh.orig commitlog_archiving.properties metrics-reporter-config-sample.yaml cassandra-jaas.config cqlshrc.sample README.txt cassandra-rackdc.properties hotspot_compiler triggers/ cassandra-topology.properties jvm.options cassandra.yaml logback-tools.xml
Lastly, the java configs can be found in the /etc/default/cassandra file
[root@new cassandra]# cat /etc/default/cassandra # NOTICE: See also /etc/cassandra/cassandra-env.sh# EXTRA_CLASSPATH provides the means to extend Cassandra's classpath with # additional libraries. It is formatted as a colon-delimited list of # class directories and/or jar files. For example, to enable the # JMX-to-web bridge install libmx4j-java and uncomment the following. #EXTRA_CLASSPATH="/usr/share/java/mx4j-tools.jar"
Cassandra starts off listening on localhost by default so the configurations will need to be modified by a dev or a system's admin to suit your needs.
If you get an error such as:
‘Failed to connect to ’127.0.0.1:7199′: Connection refused’
Then check the following tutorial to resolve that issue:
Error: Failed to connect to ’127.0.0.1:7199′: Connection refused (Cassandra) [SOLVED]
To restart Cassandra
[root@new cassandra]# systemctl restart cassandra
To shut down Cassandra
[root@new cassandra]# service cassandra stop
Our Sales and Support teams are available 24 hours by phone or e-mail to assist.