blob: b6eb52f9c808ee73d70217ac37ee7a594b8b11cc [file] [log] [blame]
<!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>