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

<h2 id="technical-internals">Technical Internals</h2>

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

