<!DOCTYPE html>
<html>
  



<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data. Cassandra's support for replicating across multiple datacenters is best-in-class, providing lower latency for your users and the peace of mind of knowing that you can survive regional outages.
">
  <meta name="keywords" content="cassandra, apache, apache cassandra, distributed storage, key value store, scalability, bigtable, dynamo" />
  <meta name="robots" content="index,follow" />
  <meta name="language" content="en" />  

  <title>Download</title>

  <link rel="canonical" href="http://cassandra.apache.org/download/">

  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
  <link rel="stylesheet" href="./../css/style.css">
  

  
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css" integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">
  
  <link type="application/atom+xml" rel="alternate" href="http://cassandra.apache.org/feed.xml" title="Apache Cassandra Website" />
</head>

  <body>
    <!-- breadcrumbs -->
<div class="topnav">
  <div class="container breadcrumb-container">
    <ul class="breadcrumb">
      <li>
        <div class="dropdown">
          <img class="asf-logo" src="./../img/asf_feather.png" />
          <a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
            <li><a href="http://www.apache.org">Apache Homepage</a></li>
            <li><a href="http://www.apache.org/licenses/">License</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
            <li><a href="http://www.apache.org/security/">Security</a></li>
          </ul>
        </div>
      </li>

      
      <li><a href="./../">Apache Cassandra</a></li>
      

      
        
        <li>Download</li>
        
      

      

      
    </ul>
  </div>

  <!-- navbar -->
  <nav class="navbar navbar-default navbar-static-top" role="navigation">
    <div class="container">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#cassandra-menu" aria-expanded="false">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="./../"><img src="./../img/cassandra_logo.png" alt="Apache Cassandra logo" /></a>
      </div><!-- /.navbar-header -->

      <div id="cassandra-menu" class="collapse navbar-collapse">
        <ul class="nav navbar-nav navbar-right">
          <li><a href="./../">Home</a></li>
          <li><a href="./../download/">Download</a></li>
          <li><a href="./../doc/">Documentation</a></li>
          <li><a href="./../community/">Community</a></li>
          <li>
            <a href="./../blog/">Blog</a>
        </li>
        </ul>
      </div><!-- /#cassandra-menu -->

      
    </div>
  </nav><!-- /.navbar -->
</div><!-- /.topnav -->

    <div class="content">
  <div class="container">
  <h2 id="downloading-cassandra">Downloading Cassandra</h2>

<h3 id="latest-version">Latest version</h3>

<p>Download the latest Apache Cassandra 3.11 release: <a href="http://www.apache.org/dyn/closer.lua/cassandra/3.11.5/apache-cassandra-3.11.5-bin.tar.gz">3.11.5</a> (<a href="http://www.apache.org/dist/cassandra/3.11.5/apache-cassandra-3.11.5-bin.tar.gz.asc">pgp</a>, <a href="http://www.apache.org/dist/cassandra/3.11.5/apache-cassandra-3.11.5-bin.tar.gz.sha256">sha256</a> and <a href="http://www.apache.org/dist/cassandra/3.11.5/apache-cassandra-3.11.5-bin.tar.gz.sha512">sha512</a>), released on 2019-10-29.</p>

<h3 id="older-supported-releases">Older supported releases</h3>

<p>The following older Cassandra releases are still supported:</p>

<ul>
  <li>Apache Cassandra 3.0 is supported until <strong>6 months after 4.0 release (date TBD)</strong>. The latest release is <a href="http://www.apache.org/dyn/closer.lua/cassandra/3.0.19/apache-cassandra-3.0.19-bin.tar.gz">3.0.19</a> (<a href="http://www.apache.org/dist/cassandra/3.0.19/apache-cassandra-3.0.19-bin.tar.gz.asc">pgp</a>, <a href="http://www.apache.org/dist/cassandra/3.0.19/apache-cassandra-3.0.19-bin.tar.gz.sha256">sha256</a> and <a href="http://www.apache.org/dist/cassandra/3.0.19/apache-cassandra-3.0.19-bin.tar.gz.sha512">sha512</a>), released on 2019-10-29.</li>
  <li>Apache Cassandra 2.2 is supported until <strong>4.0 release (date TBD)</strong>. The latest release is <a href="http://www.apache.org/dyn/closer.lua/cassandra/2.2.15/apache-cassandra-2.2.15-bin.tar.gz">2.2.15</a> (<a href="http://www.apache.org/dist/cassandra/2.2.15/apache-cassandra-2.2.15-bin.tar.gz.asc">pgp</a>, <a href="http://www.apache.org/dist/cassandra/2.2.15/apache-cassandra-2.2.15-bin.tar.gz.sha256">sha256</a> and <a href="http://www.apache.org/dist/cassandra/2.2.15/apache-cassandra-2.2.15-bin.tar.gz.sha512">sha512</a>), released on 2019-10-29.</li>
  <li>Apache Cassandra 2.1 is supported until <strong>4.0 release (date TBD)</strong> with <strong>critical fixes only</strong>. The latest release is
<a href="http://www.apache.org/dyn/closer.lua/cassandra/2.1.21/apache-cassandra-2.1.21-bin.tar.gz">2.1.21</a> (<a href="http://www.apache.org/dist/cassandra/2.1.21/apache-cassandra-2.1.21-bin.tar.gz.asc">pgp</a>, <a href="http://www.apache.org/dist/cassandra/2.1.21/apache-cassandra-2.1.21-bin.tar.gz.sha256">sha256</a> and <a href="http://www.apache.org/dist/cassandra/2.1.21/apache-cassandra-2.1.21-bin.tar.gz.sha512">sha512</a>), released on 2019-02-11.</li>
</ul>

<p>Older (unsupported) versions of Cassandra are <a href="http://archive.apache.org/dist/cassandra/">archived here</a>.</p>

<h3 id="installation-from-debian-packages">Installation from Debian packages</h3>

<ul>
  <li>For the <code class="highlighter-rouge">&lt;release series&gt;</code> specify the major version number, without dot, and with an appended <code class="highlighter-rouge">x</code>.</li>
  <li>The latest <code class="highlighter-rouge">&lt;release series&gt;</code> is <code class="highlighter-rouge">311x</code>.</li>
  <li>
    <p>For older releases, the <code class="highlighter-rouge">&lt;release series&gt;</code> can be one of <code class="highlighter-rouge">30x</code>, <code class="highlighter-rouge">22x</code>, or <code class="highlighter-rouge">21x</code>.</p>
  </li>
  <li>Add the Apache repository of Cassandra to <code class="highlighter-rouge">/etc/apt/sources.list.d/cassandra.sources.list</code>, for example for the latest 3.11 version:</li>
</ul>

<div class="highlighter-rouge"><pre class="highlight"><code>echo "deb http://www.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
</code></pre>
</div>

<ul>
  <li>Add the Apache Cassandra repository keys:</li>
</ul>

<div class="highlighter-rouge"><pre class="highlight"><code>curl https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add -
</code></pre>
</div>

<ul>
  <li>Update the repositories:</li>
</ul>

<div class="highlighter-rouge"><pre class="highlight"><code>sudo apt-get update
</code></pre>
</div>

<ul>
  <li>If you encounter this error:</li>
</ul>

<div class="highlighter-rouge"><pre class="highlight"><code>GPG error: http://www.apache.org 311x InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A278B781FE4B2BDA
</code></pre>
</div>
<p>Then add the public key A278B781FE4B2BDA as follows:</p>

<div class="highlighter-rouge"><pre class="highlight"><code>sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-key A278B781FE4B2BDA
</code></pre>
</div>
<p>and repeat <code class="highlighter-rouge">sudo apt-get update</code>. The actual key may be different, you get it from the error message itself. For a
full list of Apache contributors public keys, you can refer to <a href="https://www.apache.org/dist/cassandra/KEYS">https://www.apache.org/dist/cassandra/KEYS</a>.</p>

<ul>
  <li>Install Cassandra:</li>
</ul>

<div class="highlighter-rouge"><pre class="highlight"><code>sudo apt-get install cassandra
</code></pre>
</div>

<ul>
  <li>You can start Cassandra with <code class="highlighter-rouge">sudo service cassandra start</code> and stop it with <code class="highlighter-rouge">sudo service cassandra stop</code>.
However, normally the service will start automatically. For this reason be sure to stop it if you need to make any
configuration changes.</li>
  <li>Verify that Cassandra is running by invoking <code class="highlighter-rouge">nodetool status</code> from the command line.</li>
  <li>The default location of configuration files is <code class="highlighter-rouge">/etc/cassandra</code>.</li>
  <li>The default location of log and data directories is <code class="highlighter-rouge">/var/log/cassandra/</code> and <code class="highlighter-rouge">/var/lib/cassandra</code>.</li>
  <li>Start-up options (heap size, etc) can be configured in <code class="highlighter-rouge">/etc/default/cassandra</code>.</li>
</ul>

<h3 id="installation-from-rpm-packages">Installation from RPM packages</h3>

<ul>
  <li>For the <code class="highlighter-rouge">&lt;release series&gt;</code> specify the major version number, without dot, and with an appended <code class="highlighter-rouge">x</code>.</li>
  <li>The latest <code class="highlighter-rouge">&lt;release series&gt;</code> is <code class="highlighter-rouge">311x</code>.</li>
  <li>For older releases, the <code class="highlighter-rouge">&lt;release series&gt;</code> can be one of <code class="highlighter-rouge">30x</code>, <code class="highlighter-rouge">22x</code>, or <code class="highlighter-rouge">21x</code>.</li>
  <li>
    <p>(Not all versions of Apache Cassandra are available, since building RPMs is a recent addition to the project.)</p>
  </li>
  <li>Add the Apache repository of Cassandra to <code class="highlighter-rouge">/etc/yum.repos.d/cassandra.repo</code>, for example for the latest 3.11 version:</li>
</ul>

<div class="language-text highlighter-rouge"><pre class="highlight"><code>[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
</code></pre>
</div>

<ul>
  <li>Install Cassandra, accepting the gpg key import prompts:</li>
</ul>

<div class="highlighter-rouge"><pre class="highlight"><code>sudo yum install cassandra
</code></pre>
</div>

<p>Start Cassandra (will not start automatically):</p>

<div class="highlighter-rouge"><pre class="highlight"><code>service cassandra start
</code></pre>
</div>

<p>Systemd based distributions may require to run <code class="highlighter-rouge">systemctl daemon-reload</code> once to make Cassandra available as a systemd service. This should happen automatically by running the command above.</p>

<p>Make Cassandra start automatically after reboot:</p>

<div class="highlighter-rouge"><pre class="highlight"><code>chkconfig cassandra on
</code></pre>
</div>

<p>Please note that official RPMs for Apache Cassandra only have been available recently and are not tested thoroughly on all platforms yet. We appreciate your feedback and support and ask you to post details on any issues in the <a href="https://issues.apache.org/jira/browse/CASSANDRA-13433">corresponding Jira ticket</a>.</p>

<h3 id="source">Source</h3>

<p>Development is done in the Apache Git repository. To check out a copy:</p>

<div class="highlighter-rouge"><pre class="highlight"><code>git clone https://gitbox.apache.org/repos/asf/cassandra.git
</code></pre>
</div>

  </div>
</div>

    <hr />

<footer>
  <div class="container">
    <div class="col-md-4 social-blk">
      <span class="social">
        <a href="https://twitter.com/cassandra"
           class="twitter-follow-button"
           data-show-count="false" data-size="large">Follow @cassandra</a>
        <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
        <a href="https://twitter.com/intent/tweet?button_hashtag=cassandra"
           class="twitter-hashtag-button"
           data-size="large"
           data-related="ApacheCassandra">Tweet #cassandra</a>
        <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>

      </span>
      <a class="subscribe-rss icon-link" href="/feed.xml" title="Subscribe to Blog via RSS">
          <span><i class="fa fa-rss"></i></span>
      </a>
    </div>

    <div class="col-md-8 trademark">
      <p>&copy; 2016 <a href="http://apache.org">The Apache Software Foundation</a>.
      Apache, the Apache feather logo, and Apache Cassandra are trademarks of The Apache Software Foundation.
      <p>
    </div>
  </div><!-- /.container -->
</footer>

<!-- Javascript. Placed here so pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="./../js/underscore-min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>



<script type="text/javascript">
  var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
  document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

  try {
    var pageTracker = _gat._getTracker("UA-11583863-1");
    pageTracker._trackPageview();
  } catch(err) {}
</script>


  </body>
</html>
