<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1"/>
  <title>Apache Gearpump (Incubating): Overview</title>
  
    <meta name="description" content="Apache Gearpump 0.8.3 documentation homepage">
  

  

  

  <link rel="stylesheet" href="./css/bootstrap-3.3.5.min.css">
  <style>
    body {
      padding-top: 60px;
      padding-bottom: 40px;
    }
  </style>
  <link rel="stylesheet" href="./css/main.css">
  <link rel="stylesheet" href="css/pygments-default.css">
  <script src="./js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
</head>
<body>
  <!--[if lt IE 7]>
    <p class="chromeframe">You are using an outdated browser. <a href="http://browsehappy.com/">Upgrade your browser today</a> or <a href="http://www.google.com/chromeframe/?redirect=true">install Google Chrome Frame</a> to better experience this site.</p>l
  <![endif]-->

  <div class="navbar navbar-inverse navbar-fixed-top" id="topbar">
    <div class="container">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
          <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="/">Apache Gearpump (incubating)</a>
      </div>
      <div id="navbar" class="collapse navbar-collapse">
        <ul class="nav navbar-nav">
          <li><a href="overview.html">Overview</a></li>
          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Docs<b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li><a href="releases/latest/index.html">Latest Release (0.8.3)</a></li>
              <li><a href="usecases.html">Use Cases</a></li>
              <li class="divider"></li>
              <li><a href="publications.html">Publications</a></li>
            </ul>
          </li>
          <li><a href="downloads.html">Downloads</a></li>
          <li><a href="faq.html">FAQ</a></li>
          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Community<b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li class="dropdown-header">Community</li>
              <li><a href="community.html#mailing-lists">Mailing Lists</a></li>
              <li><a href="community.html#issue-tracker">Issue Tracker</a></li>
              <li><a href="community.html#source-code-repositories">Source Code Repositories</a></li>
              <li><a href="community.html#who-we-are">Who We Are</a></li>
              <li><a href="https://twitter.com/ApacheGearpump" target="_blank">Follow us on Twitter</a></li>
              <li class="divider"></li>
              <li class="dropdown-header">Contribute</li>
              <li><a href="how-to-contribute.html">How to Contribute</a></li>
              <li><a href="coding-style.html">Coding Style</a></li>
            </ul>
          </li>
        </ul>

        <ul class="nav navbar-nav">
          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF<b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li><a href="license.html">License</a></li>
              <li><a href="//apache.org/foundation/how-it-works.html" target="_blank">How Apache Works</a></li>
              <li><a href="//apache.org/foundation" target="_blank">Foundation</a></li>
              <li><a href="//www.apache.org/foundation/sponsorship.html" target="_blank">Sponsoring Apache</a></li>
            </ul>
          </li>
        </ul>

<a class="ribbon hidden-xs" href="//github.com/apache/incubator-gearpump"><img src="img/forkme_right_red_aa0000.png" alt="Fork me on GitHub"/></a>

      </div>
    </div>
  </div>

  <div class="container" id="content" style="margin-bottom: 50px">
   
    <h1 class="title">Apache Gearpump</h1>
   

   <p><img src="/favicon.ico" alt="gearpump-logo" /> 
<a href="https://dist.apache.org/repos/dist/release/incubator/gearpump/0.8.3-incubating/"><img src="https://img.shields.io/badge/Latest%20Release-v0.8.3-blue.svg" alt="Release" /></a></p>

<p><strong>Apache Gearpump</strong> is a real-time big data streaming engine. The name Gearpump is a reference to the engineering term &#8220;gear pump&#8221; which is a super simple pump that consists of only two gears, but is very powerful at streaming water. Different to other streaming engines, Gearpump&#8217;s engine is event/message based. Per initial benchmarks we are able to process 18 million messages per second (message length is 100 bytes) with a 8ms latency on a 4-node cluster.</p>

<h2 id="the-highlights">The Highlights</h2>

<ul>
  <li>Extremely high throughput and low latency stream processing</li>
  <li>Configurable message delivery guarantee (at least once, exactly once)</li>
  <li>Application hot re-deployment</li>
  <li>Comprehensive Dashboard for application monitoring</li>
  <li>Native Storm Application compatibility</li>
  <li>Native Samoa Application compatibility</li>
  <li>Friendly and extensible APIs</li>
</ul>

<h2 id="getting-started">Getting Started</h2>

<ul>
  <li>Download <a href="downloads.html">the latest stable release</a> and run Gearpump on your machine</li>
  <li>Checkout <a href="releases/latest/index.html">the documentation</a> to find a setup guide for all deployment options</li>
</ul>

<h2 id="apache-incubation-disclaimer">Apache Incubation Disclaimer</h2>
<p>Apache Gearpump is an effort undergoing incubation at <a href="http://www.apache.org/">The Apache Software Foundation (ASF)</a> sponsored by the Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</p>

<p style="color:gray; font-size: 80%; text-align: center;">Apache Gearpump (incubating) is available under <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, version 2.0</a>.</p>

<p style="text-align: center;"><img src="/img/incubator-logo.png" alt="incubator-logo" /></p>


  </div> <!-- /container -->

  <footer class="navbar navbar-default navbar-fixed-bottom">
    <div class="container text-center" style="padding: 14px 0 10px 0; line-height: 150%">
      <p class="text-muted">
        Copyright © 2017 <a href="//apache.org" target="_blank">The Apache Software Foundation</a>.
        All Rights Reserved.<br/>
        Apache and the Apache feather logo are trademarks of The Apache Software Foundation.
      </p>
    </div>
  </footer>

  <script src="js/vendor/jquery-2.1.4.min.js"></script>
  <script src="js/vendor/bootstrap-3.3.5.min.js"></script>
  <script src="js/vendor/anchor-1.1.1.min.js"></script>
  <script src="js/main.js"></script>

  <!-- MathJax Section -->
  <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
      TeX: { equationNumbers: { autoNumber: "AMS" } }
    });
  </script>
  <script>
    // Note that we load MathJax this way to work with local file (file://), HTTP and HTTPS.
    // We could use "//cdn.mathjax...", but that won't support "file://".
    (function(d, script) {
      script = d.createElement('script');
      script.type = 'text/javascript';
      script.async = true;
      script.onload = function(){
        MathJax.Hub.Config({
          tex2jax: {
            inlineMath: [ ["$", "$"], ["\\\\(","\\\\)"] ],
            displayMath: [ ["$$","$$"], ["\\[", "\\]"] ],
            processEscapes: true,
            skipTags: ['script', 'noscript', 'style', 'textarea', 'pre']
          }
        });
      };
      script.src = ('https:' == document.location.protocol ? 'https://' : 'http://') +
        'cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML';
      d.getElementsByTagName('head')[0].appendChild(script);
    }(document));
  </script>
</body>
</html>

