blob: 668dbee78dff8acc1d177ce00aa98c45b2adaa24 [file] [log] [blame]
= Installing Cassandra
:slug: Installing Cassandra
:tabs:
These are the instructions for deploying the supported releases of
Apache Cassandra on Linux servers.
Cassandra runs on a wide array of Linux distributions including (but not
limited to):
* Ubuntu, most notably LTS releases 16.04 to 18.04
* CentOS & RedHat Enterprise Linux (RHEL) including 6.6 to 7.7
* Amazon Linux AMIs including 2016.09 through to Linux 2
* Debian versions 8 & 9
* SUSE Enterprise Linux 12
This is not an exhaustive list of operating system platforms, nor is it
prescriptive. However users will be well-advised to conduct exhaustive
tests of their own particularly for less-popular distributions of Linux.
Deploying on older versions is not recommended unless you have previous
experience with the older distribution in a production environment.
== Prerequisites
* Install the latest version of Java 8, either the
http://www.oracle.com/technetwork/java/javase/downloads/index.html[Oracle
Java Standard Edition 8] or http://openjdk.java.net/[OpenJDK 8]. To
verify that you have the correct version of java installed, type
`java -version`.
* For using cqlsh, the latest version of
https://www.python.org/downloads/[Python 2.7]. To verify
that you have the correct version of Python installed, type
`python --version`.
== Choosing an installation method
There are three methods of installing Cassandra that are common:
* xref:getting_started/installing.adoc#docker[Docker image]
* xref:getting_started/installing.adoc#tarball[Tarball binary file]
* xref:getting_started/installing.adoc#package[Package installation (RPM, YUM)]
If you are a current Docker user, installing a Docker image is simple.
You'll need to install Docker Desktop for Mac, Docker Desktop for Windows,
or have `docker` installed on Linux.
Pull the appropriate image and then start Cassandra with a run command.
For most users, installing the binary tarball is also a simple choice.
The tarball unpacks all its contents into a single location with
binaries and configuration files located in their own subdirectories.
The most obvious attribute of the tarball installation is it does not
require `root` permissions and can be installed on any Linux
distribution.
Packaged installations require `root` permissions, and are most appropriate for
production installs.
Install the RPM build on CentOS and RHEL-based distributions if you want to
install Cassandra using YUM.
Install the Debian build on Ubuntu and other Debian-based
distributions if you want to install Cassandra using APT.
Note that both the YUM and APT methods required `root` permissions and
will install the binaries and configuration files as the `cassandra` OS user.
[#docker]
== Installing the docker image
[arabic, start=1]
. Pull the docker image. For the latest image, use:
[source, shell, subs="attributes+"]
----
include::example$BASH/docker_pull.sh[]
----
This `docker pull` command will get the specified version of the official
Apache Cassandra image available from the https://hub.docker.com/_/cassandra[Dockerhub].
[arabic, start=2]
. Start Cassandra with a `docker run` command:
[source, shell, subs="attributes+"]
----
include::example$BASH/docker_run.sh[]
----
The `--name` option will be the name of the Cassandra cluster created.
[arabic, start=3]
. Start the CQL shell, `cqlsh` to interact with the Cassandra node created:
[source, shell, subs="attributes+"]
----
include::example$BASH/docker_cqlsh.sh[]
----
[#tarball]
== Installing the binary tarball
include::partial$java_version.adoc[]
[arabic, start=2]
. Download the binary tarball from one of the mirrors on the
{cass_url}download/[Apache Cassandra Download] site.
For example, to download Cassandra {40_version}:
[source,shell, subs="attributes+"]
----
include::example$BASH/curl_install.sh[]
----
NOTE: The mirrors only host the latest versions of each major supported
release. To download an earlier version of Cassandra, visit the
http://archive.apache.org/dist/cassandra/[Apache Archives].
[arabic, start=3]
. OPTIONAL: Verify the integrity of the downloaded tarball using one of
the methods https://www.apache.org/dyn/closer.cgi#verify[here]. For
example, to verify the hash of the downloaded file using GPG:
[{tabs}]
====
Command::
+
--
[source,shell, subs="attributes+"]
----
include::example$BASH/verify_gpg.sh[]
----
--
Result::
+
--
[source,plaintext]
----
include::example$RESULTS/verify_gpg.result[]
----
--
====
Compare the signature with the SHA256 file from the Downloads site:
[{tabs}]
====
Command::
+
--
[source,shell, subs="attributes+"]
----
include::example$BASH/curl_verify_sha.sh[]
----
--
Result::
+
--
[source,plaintext]
----
include::example$RESULTS/curl_verify_sha.result[]
----
--
====
[arabic, start=4]
. Unpack the tarball:
[source,shell, subs="attributes+"]
----
include::example$BASH/tarball.sh[]
----
The files will be extracted to the `apache-cassandra-{cass-tag-3x}/` directory.
This is the tarball installation location.
[arabic, start=5]
. Located in the tarball installation location are the directories for
the scripts, binaries, utilities, configuration, data and log files:
[source,plaintext]
----
include::example$TEXT/tarball_install_dirs.txt[]
----
<1> location of the commands to run cassandra, cqlsh, nodetool, and SSTable tools
<2> location of cassandra.yaml and other configuration files
<3> location of the commit logs, hints, and SSTables
<4> location of system and debug logs
<5>location of cassandra-stress tool
For information on how to configure your installation, see
{cass_url}doc/latest/getting_started/configuring.html[Configuring
Cassandra].
[arabic, start=6]
. Start Cassandra:
[source,shell, subs="attributes+"]
----
include::example$BASH/start_tarball.sh[]
----
NOTE: This will run Cassandra as the authenticated Linux user.
include::partial$tail_syslog.adoc[]
You can monitor the progress of the startup with:
[{tabs}]
====
Command::
+
--
[source,shell, subs="attributes+"]
----
include::example$BASH/tail_syslog.sh[]
----
--
Result::
+
--
Cassandra is ready when you see an entry like this in the `system.log`:
[source,plaintext]
----
include::example$RESULTS/tail_syslog.result[]
----
--
====
include::partial$nodetool_and_cqlsh.adoc[]
[#package]
== Installing the Debian packages
include::partial$java_version.adoc[]
[arabic, start=2]
. Add the Apache repository of Cassandra to the file
`cassandra.sources.list`.
include::partial$package_versions.adoc[]
[source,shell, subs="attributes+"]
----
include::example$BASH/get_deb_package.sh[]
----
[arabic, start=3]
. Add the Apache Cassandra repository keys to the list of trusted keys
on the server:
[{tabs}]
====
Command::
+
--
[source,shell, subs="attributes+"]
----
include::example$BASH/add_repo_keys.sh[]
----
--
Result::
+
--
[source,plaintext]
----
include::example$RESULTS/add_repo_keys.result[]
----
--
====
[arabic, start=4]
. Update the package index from sources:
[source,shell, subs="attributes+"]
----
include::example$BASH/apt-get_update.sh[]
----
[arabic, start=5]
. Install Cassandra with APT:
[source,shell, subs="attributes+"]
----
include::example$BASH/apt-get_cass.sh[]
----
NOTE: For information on how to configure your installation, see
{cass_url}doc/latest/getting_started/configuring.html[Configuring
Cassandra].
include::partial$tail_syslog.adoc[]
include::partial$nodetool_and_cqlsh_nobin.adoc[]
== Installing the RPM packages
include::partial$java_version.adoc[]
[arabic, start=2]
. Add the Apache repository of Cassandra to the file
`/etc/yum.repos.d/cassandra.repo` (as the `root` user).
include::partial$package_versions.adoc[]
[source,plaintext]
----
include::example$RESULTS/add_yum_repo.result[]
----
[arabic, start=3]
. Update the package index from sources:
[source,shell, subs="attributes+"]
----
include::example$BASH/yum_update.sh[]
----
[arabic, start=4]
. Install Cassandra with YUM:
[source,shell, subs="attributes+"]
----
include::example$BASH/yum_cass.sh[]
----
NOTE: A new Linux user `cassandra` will get created as part of the
installation. The Cassandra service will also be run as this user.
[arabic, start=5]
. Start the Cassandra service:
[source,shell, subs="attributes+"]
----
include::example$BASH/yum_start.sh[]
----
include::partial$tail_syslog.adoc[]
include::partial$nodetool_and_cqlsh_nobin.adoc[]
== Further installation info
For help with installation issues, see the
{cass_url}doc/latest/troubleshooting/index.html[Troubleshooting]
section.