blob: ddab7e8a9861ece6e73c527b1198a80f531e9b7d [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Installation &mdash; Airflow Documentation</title>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Tutorial" href="tutorial.html" />
<link rel="prev" title="Quick Start" href="start.html" />
<script>
document.addEventListener('DOMContentLoaded', function() {
var el = document.getElementById('changelog');
if (el !== null ) {
// [AIRFLOW-...]
el.innerHTML = el.innerHTML.replace(
/\[(AIRFLOW-[\d]+)\]/g,
`<a href="https://issues.apache.org/jira/browse/$1">[$1]</a>`
);
// (#...)
el.innerHTML = el.innerHTML.replace(
/\(#([\d]+)\)/g,
`<a href="https://github.com/apache/airflow/pull/$1">(#$1)</a>`
);
};
})
</script>
<style>
.example-header {
position: relative;
background: #9AAA7A;
padding: 8px 16px;
margin-bottom: 0;
}
.example-header--with-button {
padding-right: 166px;
}
.example-header:after{
content: '';
display: table;
clear: both;
}
.example-title {
display:block;
padding: 4px;
margin-right: 16px;
color: white;
overflow-x: auto;
}
.example-header-button {
top: 8px;
right: 16px;
position: absolute;
}
.example-header + .highlight-python {
margin-top: 0 !important;
}
.viewcode-button {
display: inline-block;
padding: 8px 16px;
border: 0;
margin: 0;
outline: 0;
border-radius: 2px;
-webkit-box-shadow: 0 3px 5px 0 rgba(0,0,0,.3);
box-shadow: 0 3px 6px 0 rgba(0,0,0,.3);
color: #404040;
background-color: #e7e7e7;
cursor: pointer;
font-size: 16px;
font-weight: 500;
line-height: 1;
text-decoration: none;
text-overflow: ellipsis;
overflow: hidden;
text-transform: uppercase;
-webkit-transition: background-color .2s;
transition: background-color .2s;
vertical-align: middle;
white-space: nowrap;
}
.viewcode-button:visited {
color: #404040;
}
.viewcode-button:hover, .viewcode-button:focus {
color: #404040;
background-color: #d6d6d6;
}
</style>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '13']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo -->
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> Airflow
</a>
<div class="version">
1.10.4
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="project.html">Project</a></li>
<li class="toctree-l1"><a class="reference internal" href="license.html">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="start.html">Quick Start</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Installation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#getting-airflow">Getting Airflow</a></li>
<li class="toctree-l2"><a class="reference internal" href="#extra-packages">Extra Packages</a></li>
<li class="toctree-l2"><a class="reference internal" href="#initiating-airflow-database">Initiating Airflow Database</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="howto/index.html">How-to Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="ui.html">UI / Screenshots</a></li>
<li class="toctree-l1"><a class="reference internal" href="concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="profiling.html">Data Profiling</a></li>
<li class="toctree-l1"><a class="reference internal" href="cli.html">Command Line Interface</a></li>
<li class="toctree-l1"><a class="reference internal" href="scheduler.html">Scheduling &amp; Triggers</a></li>
<li class="toctree-l1"><a class="reference internal" href="plugins.html">Plugins</a></li>
<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="timezone.html">Time zones</a></li>
<li class="toctree-l1"><a class="reference internal" href="api.html">Experimental Rest API</a></li>
<li class="toctree-l1"><a class="reference internal" href="integration.html">Integration</a></li>
<li class="toctree-l1"><a class="reference internal" href="metrics.html">Metrics</a></li>
<li class="toctree-l1"><a class="reference internal" href="kubernetes.html">Kubernetes</a></li>
<li class="toctree-l1"><a class="reference internal" href="lineage.html">Lineage</a></li>
<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="macros.html">Macros reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="_api/index.html">API Reference</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Airflow</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Installation</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/installation.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="installation">
<h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline"></a></h1>
<div class="section" id="getting-airflow">
<h2>Getting Airflow<a class="headerlink" href="#getting-airflow" title="Permalink to this headline"></a></h2>
<p>The easiest way to install the latest stable version of Airflow is with <code class="docutils literal notranslate"><span class="pre">pip</span></code>:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>pip install apache-airflow
</pre></div>
</div>
<p>You can also install Airflow with support for extra features like <code class="docutils literal notranslate"><span class="pre">gcp</span></code> or <code class="docutils literal notranslate"><span class="pre">postgres</span></code>:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>pip install apache-airflow<span class="o">[</span>postgres,gcp<span class="o">]</span>
</pre></div>
</div>
</div>
<div class="section" id="extra-packages">
<h2>Extra Packages<a class="headerlink" href="#extra-packages" title="Permalink to this headline"></a></h2>
<p>The <code class="docutils literal notranslate"><span class="pre">apache-airflow</span></code> PyPI basic package only installs what’s needed to get started.
Subpackages can be installed depending on what will be useful in your
environment. For instance, if you don’t need connectivity with Postgres,
you won’t have to go through the trouble of installing the <code class="docutils literal notranslate"><span class="pre">postgres-devel</span></code>
yum package, or whatever equivalent applies on the distribution you are using.</p>
<p>Behind the scenes, Airflow does conditional imports of operators that require
these extra dependencies.</p>
<p>Here’s the list of the subpackages and what they enable:</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 15%" />
<col style="width: 37%" />
<col style="width: 49%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>subpackage</p></th>
<th class="head"><p>install command</p></th>
<th class="head"><p>enables</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>all</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[all]'</span></code></p></td>
<td><p>All Airflow features known to man</p></td>
</tr>
<tr class="row-odd"><td><p>all_dbs</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[all_dbs]'</span></code></p></td>
<td><p>All databases integrations</p></td>
</tr>
<tr class="row-even"><td><p>async</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[async]'</span></code></p></td>
<td><p>Async worker classes for Gunicorn</p></td>
</tr>
<tr class="row-odd"><td><p>celery</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[celery]'</span></code></p></td>
<td><p>CeleryExecutor</p></td>
</tr>
<tr class="row-even"><td><p>cloudant</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[cloudant]'</span></code></p></td>
<td><p>Cloudant hook</p></td>
</tr>
<tr class="row-odd"><td><p>crypto</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[crypto]'</span></code></p></td>
<td><p>Encrypt connection passwords in metadata db</p></td>
</tr>
<tr class="row-even"><td><p>devel</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[devel]'</span></code></p></td>
<td><p>Minimum dev tools requirements</p></td>
</tr>
<tr class="row-odd"><td><p>devel_hadoop</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[devel_hadoop]'</span></code></p></td>
<td><p>Airflow + dependencies on the Hadoop stack</p></td>
</tr>
<tr class="row-even"><td><p>druid</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[druid]'</span></code></p></td>
<td><p>Druid related operators &amp; hooks</p></td>
</tr>
<tr class="row-odd"><td><p>gcp</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[gcp]'</span></code></p></td>
<td><p>Google Cloud Platform</p></td>
</tr>
<tr class="row-even"><td><p>github_enterprise</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[github_enterprise]'</span></code></p></td>
<td><p>GitHub Enterprise auth backend</p></td>
</tr>
<tr class="row-odd"><td><p>google_auth</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[google_auth]'</span></code></p></td>
<td><p>Google auth backend</p></td>
</tr>
<tr class="row-even"><td><p>hdfs</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[hdfs]'</span></code></p></td>
<td><p>HDFS hooks and operators</p></td>
</tr>
<tr class="row-odd"><td><p>hive</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[hive]'</span></code></p></td>
<td><p>All Hive related operators</p></td>
</tr>
<tr class="row-even"><td><p>jdbc</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[jdbc]'</span></code></p></td>
<td><p>JDBC hooks and operators</p></td>
</tr>
<tr class="row-odd"><td><p>kerberos</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[kerberos]'</span></code></p></td>
<td><p>Kerberos integration for Kerberized Hadoop</p></td>
</tr>
<tr class="row-even"><td><p>kubernetes</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[kubernetes]'</span></code></p></td>
<td><p>Kubernetes Executor and operator</p></td>
</tr>
<tr class="row-odd"><td><p>ldap</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[ldap]'</span></code></p></td>
<td><p>LDAP authentication for users</p></td>
</tr>
<tr class="row-even"><td><p>mssql</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[mssql]'</span></code></p></td>
<td><p>Microsoft SQL Server operators and hook,
support as an Airflow backend</p></td>
</tr>
<tr class="row-odd"><td><p>mysql</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[mysql]'</span></code></p></td>
<td><p>MySQL operators and hook, support as an Airflow
backend. The version of MySQL server has to be
5.6.4+. The exact version upper bound depends
on version of <code class="docutils literal notranslate"><span class="pre">mysqlclient</span></code> package. For
example, <code class="docutils literal notranslate"><span class="pre">mysqlclient</span></code> 1.3.12 can only be
used with MySQL server 5.6.4 through 5.7.</p></td>
</tr>
<tr class="row-even"><td><p>oracle</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[oracle]'</span></code></p></td>
<td><p>Oracle hooks and operators</p></td>
</tr>
<tr class="row-odd"><td><p>password</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[password]'</span></code></p></td>
<td><p>Password authentication for users</p></td>
</tr>
<tr class="row-even"><td><p>postgres</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[postgres]'</span></code></p></td>
<td><p>PostgreSQL operators and hook, support as an
Airflow backend</p></td>
</tr>
<tr class="row-odd"><td><p>qds</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[qds]'</span></code></p></td>
<td><p>Enable QDS (Qubole Data Service) support</p></td>
</tr>
<tr class="row-even"><td><p>rabbitmq</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[rabbitmq]'</span></code></p></td>
<td><p>RabbitMQ support as a Celery backend</p></td>
</tr>
<tr class="row-odd"><td><p>redis</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[redis]'</span></code></p></td>
<td><p>Redis hooks and sensors</p></td>
</tr>
<tr class="row-even"><td><p>s3</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[s3]'</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">S3KeySensor</span></code>, <code class="docutils literal notranslate"><span class="pre">S3PrefixSensor</span></code></p></td>
</tr>
<tr class="row-odd"><td><p>samba</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">apache-airflow[samba]'</span></code></p></td>
<td><p><a class="reference internal" href="_api/airflow/operators/hive_to_samba_operator/index.html#airflow.operators.hive_to_samba_operator.Hive2SambaOperator" title="airflow.operators.hive_to_samba_operator.Hive2SambaOperator"><code class="xref py py-class docutils literal notranslate"><span class="pre">airflow.operators.hive_to_samba_operator.Hive2SambaOperator</span></code></a></p></td>
</tr>
<tr class="row-even"><td><p>slack</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[slack']</span></code></p></td>
<td><p><a class="reference internal" href="_api/airflow/operators/slack_operator/index.html#airflow.operators.slack_operator.SlackAPIOperator" title="airflow.operators.slack_operator.SlackAPIOperator"><code class="xref py py-class docutils literal notranslate"><span class="pre">airflow.operators.slack_operator.SlackAPIOperator</span></code></a></p></td>
</tr>
<tr class="row-odd"><td><p>ssh</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[ssh]'</span></code></p></td>
<td><p>SSH hooks and Operator</p></td>
</tr>
<tr class="row-even"><td><p>vertica</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[vertica]'</span></code></p></td>
<td><p>Vertica hook support as an Airflow backend</p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="initiating-airflow-database">
<h2>Initiating Airflow Database<a class="headerlink" href="#initiating-airflow-database" title="Permalink to this headline"></a></h2>
<p>Airflow requires a database to be initiated before you can run tasks. If
you’re just experimenting and learning Airflow, you can stick with the
default SQLite option. If you don’t want to use SQLite, then take a look at
<a class="reference internal" href="howto/initialize-database.html"><span class="doc">Initializing a Database Backend</span></a> to setup a different database.</p>
<p>After configuration, you’ll need to initialize the database before you can
run tasks:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>airflow initdb
</pre></div>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="tutorial.html" class="btn btn-neutral float-right" title="Tutorial" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="start.html" class="btn btn-neutral float-left" title="Quick Start" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>