<!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>Deploy Standalone Mode - Gearpump 0.8.1 Documentation</title>
  
  <meta name="description"
        content="Deploy Gearpump in Standalone Mode">
  

  

  <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>
<![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="http://gearpump.apache.org">Gearpump
        <span class="label label-primary" style="font-size: .6em">0.8.1</span>
      </a>
    </div>
    <div id="navbar" class="collapse navbar-collapse">
      <ul class="nav navbar-nav">
        <li><a href="index.html">Overview</a></li>

        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Introduction<b
            class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="submit-your-1st-application.html">Submit Your 1st Application</a></li>
            <li><a href="commandline.html">Client Command Line</a></li>
            <li class="divider"></li>
            <li><a href="basic-concepts.html">Basic Concepts</a></li>
            <li><a href="features.html">Technical Highlights</a></li>
            <li><a href="message-delivery.html">Reliable Message Delivery</a></li>
            <li><a href="performance-report.html">Performance</a></li>
            <li><a href="gearpump-internals.html">Gearpump Internals</a></li>
          </ul>
        </li>

        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Deploying<b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li class="dropdown-header">Deployment</li>
            <li><a href="deployment-local.html">Local Mode</a>
            <li>
            <li><a href="deployment-standalone.html">Standalone Mode</a></li>
            <li><a href="deployment-yarn.html">YARN Mode</a></li>
            <li><a href="deployment-docker.html">Docker Mode</a>
            <li>
            <li class="divider"></li>
            <li><a href="deployment-ui-authentication.html">UI Authentication</a></li>
            <li><a href="deployment-ha.html">High Availability</a></li>
            <li><a href="deployment-msg-delivery.html">Reliable Message Delivery</a></li>
            <li><a href="deployment-configuration.html">Configuration</a></li>
            <li><a href="deployment-resource-isolation.html">Resource Isolation</a></li>
            <li class="divider"></li>
            <li><a href="deployment-security.html">YARN Security Guide</a></li>
          </ul>
        </li>

        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Programming Guide<b
            class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="dev-write-1st-app.html">Write Your 1st App</a></li>
            <li><a href="dev-custom-serializer.html">Customized Message Passing</a></li>
            <li class="divider"></li>
            <li><a href="api/scala/index.html">Scala API</a></li>
            <li><a href="api/java/index.html">Java API</a></li>
            <li><a href="dev-rest-api.html">RESTful API</a></li>
            <li class="divider"></li>
            <li><a href="dev-connectors.html">Gearpump Connectors</a></li>
            <li class="divider"></li>
            <li><a href="dev-storm.html">Storm Compatibility</a></li>
            <!--
            <li><a href="dev-samoa.html">Samoa Compatibility</a></li>
            <li class="divider"></li>
            <li><a href="dev-iot.html">Gearpump with IoT</a></li>
            -->
          </ul>
        </li>

        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown">More<b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="faq.html">FAQ</a></li>
          </ul>
        </li>
      </ul>
    </div>
  </div>
</div>

<div class="container" id="content">
  
  <h1 class="title">Deploy Gearpump in Standalone Mode</h1>
  

  <p>Standalone mode is a distributed cluster mode. That is, Gearpump runs as service without the help from other services (e.g. YARN).</p>

<p>To deploy Gearpump in cluster mode, please first check that the <a href="hardware-requirement.html">Pre-requisites</a> are met.</p>

<h3 id="how-to-install">How to Install</h3>
<p>You need to have Gearpump binary at hand. Please refer to <a href="get-gearpump-distribution.html">How to get gearpump distribution</a> to get the Gearpump binary.</p>

<p>You are suggested to unzip the package to same directory path on every machine you planned to install Gearpump.
To install Gearpump, you at least need to change the configuration in <code>conf/gear.conf</code>.</p>

<table>
  <thead>
    <tr>
      <th>Config</th>
      <th>Default value</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>gearpump.hostname</td>
      <td>&#8220;127.0.0.1&#8221;</td>
      <td>Host or IP address of current machine. The ip/host need to be reachable from other machines in the cluster.</td>
    </tr>
    <tr>
      <td>gearpump.cluster.masters</td>
      <td>[&#8220;127.0.0.1:3000&#8221;]</td>
      <td>List of all master nodes, with each item represents host and port of one master.</td>
    </tr>
    <tr>
      <td>gearpump.worker.slots</td>
      <td>1000</td>
      <td>how many slots this worker has</td>
    </tr>
  </tbody>
</table>

<p>Besides this, there are other optional configurations related with logs, metrics, transports, ui. You can refer to <a href="deployment-configuration.html">Configuration Guide</a> for more details.</p>

<h3 id="start-the-cluster-daemons-in-standlone-mode">Start the Cluster Daemons in Standlone mode</h3>
<p>In Standalone mode, you can start master and worker in different JVMs.</p>

<h5 id="to-start-master">To start master:</h5>
<div class="highlight"><pre><code class="language-bash">bin/master -ip xx -port xx</code></pre></div>

<p>The ip and port will be checked against settings under <code>conf/gear.conf</code>, so you need to make sure they are consistent.</p>

<p><strong>NOTE:</strong> You may need to execute <code>chmod +x bin/*</code> in shell to make the script file <code>master</code> executable.</p>

<p><strong>NOTE</strong>: for high availability, please check <a href="deployment-ha.html">Master HA Guide</a></p>

<h5 id="to-start-worker">To start worker:</h5>
<div class="highlight"><pre><code class="language-bash">bin/worker</code></pre></div>

<h3 id="start-ui">Start UI</h3>

<div class="highlight"><pre><code class="language-bash">bin/services</code></pre></div>

<p>After UI is started, you can browse to <code>http://{web_ui_host}:8090</code> to view the cluster status.
The default username and password is &#8220;admin:admin&#8221;, you can check
<a href="deployment-ui-authentication.html">UI Authentication</a> to find how to manage users.</p>

<p><img src="img/dashboard.gif" alt="Dashboard" /></p>

<p><strong>NOTE:</strong> The UI port can be configured in <code>gear.conf</code>. Check <a href="deployment-configuration.html">Configuration Guide</a> for information.</p>

<h3 id="bash-tool-to-start-cluster">Bash tool to start cluster</h3>

<p>There is a bash tool <code>bin/start-cluster.sh</code> can launch the cluster conveniently. You need to change the file <code>conf/masters</code>, <code>conf/workers</code> and <code>conf/dashboard</code> to specify the corresponding machines.
Before running the bash tool, please make sure the Gearpump package is already unzipped to the same directory path on every machine.
<code>bin/stop-cluster.sh</code> is used to stop the whole cluster of course.</p>

<p>The bash tool is able to launch the cluster without changing the <code>conf/gear.conf</code> on every machine. The bash sets the <code>gearpump.cluster.masters</code> and other configurations using JAVA_OPTS.
However, please note when you log into any these unconfigured machine and try to launch the dashboard or submit the application, you still need to modify <code>conf/gear.conf</code> manually because the JAVA_OPTS is missing.</p>


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

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