<!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): FAQ</title>
  

  

  

  <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.4)</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">Frequently Asked Questions</h1>
   

   <p>The following questions are frequently asked with regard to the Gearpump project in general. If you have further questions, make sure to consult the documentation or feel free to ask the community.</p>

<table class="table table-condensed table-hover">
  <tbody>
    <tr>
      <td><strong><a href="#general">General</a></strong></td>
    </tr>
    <tr>
      <td>&#160; <a href="#why-we-name-it-gearpump">Why we name it Gearpump?</a></td>
    </tr>
    <tr>
      <td>&#160; <a href="#whats-relationship-between-gearpump-and-yarn">What&#8217;s relationship between Gearpump and YARN?</a></td>
    </tr>
    <tr>
      <td>&#160; <a href="#relation-with-storm-and-spark-streaming">Relation with Storm and Spark Streaming</a></td>
    </tr>
    <tr>
      <td><strong><a href="#technical-internals">Technical Internals</a></strong></td>
    </tr>
    <tr>
      <td>&#160; <a href="#why-not-using-akka-persistence-to-store-the-checkpoint-file">Why not using Akka persistence to store the checkpoint file?</a></td>
    </tr>
    <tr>
      <td>&#160; <a href="#have-you-considered-the-akka-stream-api-for-the-high-level-dsl">Have you considered the Akka Stream API for the high level DSL?</a></td>
    </tr>
    <tr>
      <td>&#160; <a href="#why-wrapping-the-task-instead-of-using-the-actor-interface-directly">Why wrapping the Task, instead of using the Actor interface directly?</a></td>
    </tr>
    <tr>
      <td>&#160; <a href="#why-does-my-task-has-an-extremely-high-message-latency-eg-10-seconds-">Why does my task has an extremely high message latency (e.g. 10 seconds)?</a></td>
    </tr>
    <tr>
      <td><strong><a href="#errors">Errors</a></strong></td>
    </tr>
    <tr>
      <td>&#160; <a href="#why-i-cannot-open-the-dashboard-even-if-the-services-process-has-been-launched-successfully">Why I cannot open the Dashboard, even if the Services process has been launched successfully?</a></td>
    </tr>
  </tbody>
</table>

<h2 id="general">General</h2>

<h3 id="why-we-name-it-gearpump">Why we name it Gearpump?</h3>

<p>The name Gearpump is a reference 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 from left to right.</p>

<h3 id="whats-relationship-between-gearpump-and-yarn">What&#8217;s relationship between Gearpump and YARN?</h3>
<p>Gearpump can run on top of YARN as a YARN application. Gearpump&#8217;s Application Master provides the application management, deployment and scheduling of DAG&#8217;s after arbitrating and receiving container resources from YARN.</p>

<h3 id="relation-with-storm-and-spark-streaming">Relation with Storm and Spark Streaming</h3>
<p>Storm and Spark Streaming are proven platforms. There are many production deployments. Compared with them, Gearpump is not than proven and there is no production deployment yet. However, there is no single platform that can cover every use case. Gearpump has its own +1 points in some unique use cases. For instance, for the IOT use cases, Gearpump may be considered convenient because the topology can be deployed to edge device with feature of location transparency. For another example, when users want to upgrade the application online without service interruption, Gearpump may be suitable as it can dynamically modify the computation DAG on the fly. To explore more good use cases that are suitable for Gearpump, please check the section <a href="usecases.html">What is a good use case for Gearpump</a>.</p>

<h3 id="why-not-using-akka-persistence-to-store-the-checkpoint-file">Why not using Akka persistence to store the checkpoint file?</h3>

<ol>
  <li>We only checkpoint file to disk when necessary, not at record level.</li>
  <li>We have custom checkpoint file format.</li>
</ol>

<h3 id="have-you-considered-the-akka-stream-api-for-the-high-level-dsl">Have you considered the Akka Stream API for the high level DSL?</h3>

<p>We are looking into a hands of candidate for what a good DSL should be. Akka Stream API is one of the candidates.</p>

<h3 id="why-wrapping-the-task-instead-of-using-the-actor-interface-directly">Why wrapping the Task, instead of using the Actor interface directly?</h3>

<ol>
  <li>It is more easy to conduct Unit test.</li>
  <li>We have custom logic and messages to ensure the data consistency, like flow control, like message loss detection.</li>
  <li>As the Gearpump interface evolves rapidly. For now, we want to conservative in exposing more powerful functions so that we doesn&#8217;t tie our hands for future refactoring, it provides a great flexibility.</li>
</ol>

<h3 id="why-does-my-task-has-an-extremely-high-message-latency-eg-10-seconds-">Why does my task has an extremely high message latency (e.g. 10 seconds) ?</h3>

<p>Please check whether you are doing blocking jobs (e.g. sleep, IO) in your task. By default, all tasks in an executor share a thread pool. The blocking tasks could use up all the threads while other tasks don&#8217;t get a chance to run. In that case, you can set <code>gearpump.task-dispatcher</code> to <code>"gearpump.single-thread-dispatcher"</code> in <code>gear.conf</code> such that a unique thread is dedicated to each task.</p>

<p>Generally, we recommend use the default <code>share-thread-pool-dispatcher</code> which has better performance and only turn to the <code>single-thread-dispatcher</code> when you have to.</p>

<h2 id="errors">Errors</h2>

<h3 id="why-i-cannot-open-the-dashboard-even-if-the-services-process-has-been-launched-successfully">Why I cannot open the Dashboard, even if the Services process has been launched successfully?</h3>

<p>By default, our Services process binds to a local <strong>IPv6 port</strong>. It&#8217;s possible that another process on your system has already taken up the same <strong>IPv4 port</strong>. You may check by <code>lsof -i -P | grep -i "Listen"</code> if your system is Unix/Linux.</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>

