<!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">
  

  
</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>
        </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.1/apache-cassandra-3.11.1-bin.tar.gz">3.11.1</a> (<a href="http://www.apache.org/dist/cassandra/3.11.1/apache-cassandra-3.11.1-bin.tar.gz.asc">pgp</a>, <a href="http://www.apache.org/dist/cassandra/3.11.1/apache-cassandra-3.11.1-bin.tar.gz.md5">md5</a> and <a href="http://www.apache.org/dist/cassandra/3.11.1/apache-cassandra-3.11.1-bin.tar.gz.sha1">sha1</a>), released on 2017-10-10.</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.15/apache-cassandra-3.0.15-bin.tar.gz">3.0.15</a> (<a href="http://www.apache.org/dist/cassandra/3.0.15/apache-cassandra-3.0.15-bin.tar.gz.asc">pgp</a>, <a href="http://www.apache.org/dist/cassandra/3.0.15/apache-cassandra-3.0.15-bin.tar.gz.md5">md5</a> and <a href="http://www.apache.org/dist/cassandra/3.0.15/apache-cassandra-3.0.15-bin.tar.gz.sha1">sha1</a>), released on 2017-10-10.</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.12/apache-cassandra-2.2.12-bin.tar.gz">2.2.12</a> (<a href="http://www.apache.org/dist/cassandra/2.2.12/apache-cassandra-2.2.12-bin.tar.gz.asc">pgp</a>, <a href="http://www.apache.org/dist/cassandra/2.2.12/apache-cassandra-2.2.12-bin.tar.gz.md5">md5</a> and <a href="http://www.apache.org/dist/cassandra/2.2.12/apache-cassandra-2.2.12-bin.tar.gz.sha1">sha1</a>), released on 2018-02-16.</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.20/apache-cassandra-2.1.20-bin.tar.gz">2.1.20</a> (<a href="http://www.apache.org/dist/cassandra/2.1.20/apache-cassandra-2.1.20-bin.tar.gz.asc">pgp</a>, <a href="http://www.apache.org/dist/cassandra/2.1.20/apache-cassandra-2.1.20-bin.tar.gz.md5">md5</a> and <a href="http://www.apache.org/dist/cassandra/2.1.20/apache-cassandra-2.1.20-bin.tar.gz.sha1">sha1</a>), released on 2018-02-16.</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>&lt;release series&gt;</code> specify the major version number, without dot, and with an appended <code>x</code>.</li>
  <li>The latest <code>&lt;release series&gt;</code> is <code>311x</code>.</li>
  <li>
    <p>For older releases, the <code>&lt;release series&gt;</code> can be one of <code>30x</code>, <code>22x</code>, or <code>21x</code>.</p>
  </li>
  <li>Add the Apache repository of Cassandra to <code>/etc/apt/sources.list.d/cassandra.sources.list</code>, for example for the latest 3.11 version:</li>
</ul>

<pre><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>

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

<pre><code>curl https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add -
</code></pre>

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

<pre><code>sudo apt-get update
</code></pre>

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

<pre><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>
<p>Then add the public key A278B781FE4B2BDA as follows:</p>

<pre><code>sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-key A278B781FE4B2BDA
</code></pre>
<p>and repeat <code>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>

<pre><code>sudo apt-get install cassandra
</code></pre>

<ul>
  <li>You can start Cassandra with <code>sudo service cassandra start</code> and stop it with <code>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>nodetool status</code> from the command line.</li>
  <li>The default location of configuration files is <code>/etc/cassandra</code>.</li>
  <li>The default location of log and data directories is <code>/var/log/cassandra/</code> and <code>/var/lib/cassandra</code>.</li>
  <li>Start-up options (heap size, etc) can be configured in <code>/etc/default/cassandra</code>.</li>
</ul>

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

<ul>
  <li>For the <code>&lt;release series&gt;</code> specify the major version number, without dot, and with an appended <code>x</code>.</li>
  <li>The latest <code>&lt;release series&gt;</code> is <code>311x</code>.</li>
  <li>For older releases, the <code>&lt;release series&gt;</code> can be one of <code>30x</code>, <code>22x</code>, or <code>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>/etc/yum.repos.d/cassandra.repo</code>, for example for the latest 3.11 version:</li>
</ul>

<div><div class="CodeRay">
  <div class="code"><pre><span class="line-numbers"><a href="#n1" name="n1"></a></span>[cassandra]
<span class="line-numbers"><a href="#n2" name="n2"></a></span>name=Apache Cassandra
<span class="line-numbers"><a href="#n3" name="n3"></a></span>baseurl=https://www.apache.org/dist/cassandra/redhat/311x/
<span class="line-numbers"><a href="#n4" name="n4"></a></span>gpgcheck=1
<span class="line-numbers"><a href="#n5" name="n5"></a></span>repo_gpgcheck=1
<span class="line-numbers"><a href="#n6" name="n6"></a></span>gpgkey=https://www.apache.org/dist/cassandra/KEYS
</pre></div>
</div>
</div>

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

<pre><code>sudo yum install cassandra
</code></pre>

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

<pre><code>service cassandra start
</code></pre>

<p>Systemd based distributions may require to run <code>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>

<pre><code>chkconfig cassandra on
</code></pre>

<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>

<pre><code>git clone http://git-wip-us.apache.org/repos/asf/cassandra.git
</code></pre>

  </div>
</div>

    <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>
    </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>
