---
layout: page
title: Download
permalink: /download/
---
<link href="{{ site.baseurl }}/css/download.css" rel="stylesheet" type="text/css">
<p>Drill {{ site.data.version.display_version }} was released on {{ site.data.version.release_date }}.</p>

<h3>Drill for Hadoop 3 and non-Hadoop environments</h3>
<div id="download_bar">
	<div class="table">
	<ul id="download_buttons">
		<li><a href="https://www.apache.org/dyn/closer.cgi/drill/{{ site.data.version.full_version }}/apache-drill-{{ site.data.version.full_version }}.tar.gz" class="find" id="apachemirror">Find an Apache Mirror</a></li>
		<li><a href="https://www.apache.org/dyn/closer.lua?filename=drill/{{ site.data.version.full_version }}/apache-drill-{{ site.data.version.full_version }}.tar.gz&action=download" class="dl" id="directdownload">Direct File Download</a></li>
		<li><a href="{{ site.baseurl }}/docs/interfaces-introduction/" class="dl">Client Drivers (ODBC/JDBC)</a></li>
	</ul>
	</div>
</div>
<h3>Drill for Hadoop 2 environments</h3>
<div id="download_bar">
	<div class="table">
	<ul id="download_buttons">
		<li><a href="https://www.apache.org/dyn/closer.cgi/drill/{{ site.data.version.full_version }}/apache-drill-{{ site.data.version.full_version }}-hadoop2.tar.gz" class="find" id="apachemirror">Find an Apache Mirror</a></li>
		<li><a href="https://www.apache.org/dyn/closer.lua?filename=drill/{{ site.data.version.full_version }}/apache-drill-{{ site.data.version.full_version }}-hadoop2.tar.gz&action=download" class="dl" id="directdownload">Direct File Download</a></li>
	</ul>
	</div>
</div>

<p>Additional resources for Drill {{ site.data.version.display_version }}:</p>
<ul>
{% if site.data.version.blog_post %}<li><a href="{{ site.baseurl }}{{ site.data.version.blog_post }}">Blog post</a></li>{% endif %}
{% if site.data.version.release_notes %}<li><a href="{{ site.data.version.release_notes }}">Release notes (JIRA)</a></li>{% endif %}
<li><a href="https://github.com/apache/drill/tree/{{ site.data.version.full_version }}">Source code</a></li>
    <li>Verification Links:
        <ul>
            <li>
                <a href="https://www.apache.org/dist/drill/{{ site.data.version.full_version }}/apache-drill-{{ site.data.version.full_version }}.tar.gz.sha512">SHA</a>
            </li>
            <li>
                <a href="https://www.apache.org/dist/drill/{{ site.data.version.full_version }}/apache-drill-{{ site.data.version.full_version }}.tar.gz.asc">ASC</a>
            </li>
			<li>
                <a href="https://www.apache.org/dist/drill/KEYS">KEYS</a>
            </li>
			<li>
                <a href="https://www.apache.org/info/verification.html">How to Verify Downloaded Files</a>
            </li>
        </ul>
    </li>
</ul>

<p>If you're looking for an older release, see the <a href="{{ site.baseurl }}/docs/release-notes/">release notes</a>.

<script type="text/javascript">
$('#directdownload').click(function(event) {
  ga('send', 'event', 'Downloads', 'Direct', 'Direct Download');
});
$('#apachemirror').click(function(event) {
  event.preventDefault();
  var link = $(this);
  ga('send', 'event', 'Downloads', 'Link', 'Apache Mirrors', {
    'hitCallback': function () {
      document.location = link.attr('href');
    }
  });
});
</script>
