<!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>Get Gearpump Distribution - Gearpump 0.7.3 Documentation</title>
  
   <meta name="description" content="How to Get Your Gearpump Distribution">
  

  

  <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">
        <a class="navbar-brand" href="http://gearpump.io">Gearpump
          <span class="label label-primary" style="font-size: .6em">0.7.3</span>
        </a>
      </div>
      <div 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-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 class="divider"></li>
              <li><a href="deployment-security.html">Security</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="how-to-contribute.html">How to Contribute</a></li>
              <li><a href="coding-style.html">Coding Style</a></li>
              <li class="divider"></li>
              <li><a href="faq.html">FAQ</a><li>
              <li><a href="about.html">About</a></li>
            </ul>
          </li>
        </ul>
      </div>
    </div>
  </div>

  <div class="container" id="content">
   
    <h1 class="title">How to Get Your Gearpump Distribution</h1>
   

   <h3 id="prepare-the-binary">Prepare the binary</h3>
<p>You can either download pre-build release package or choose to build from source code.</p>

<h4 id="download-release-binary">Download Release Binary</h4>

<p>If you choose to use pre-build package, then you don&#8217;t need to build from source code. The release package can be downloaded from:</p>

<h5 id="download-pagedownloadhtml"><a href="/download.html">Download page</a></h5>

<h4 id="build-from-source-code">Build from Source code</h4>

<p>If you choose to build the package from source code yourself, you can follow these steps:</p>

<p>1). Clone the Gearpump repository</p>

<div class="highlight"><pre><code class="language-bash">  git clone https://github.com/gearpump/gearpump.git
  <span class="nb">cd </span>gearpump</code></pre></div>

<p>2). Build package</p>

<div class="highlight"><pre><code class="language-bash">  <span class="c">## Please use scala 2.11</span>
  <span class="c">## The target package path: output/target/gearpump-2.11-0.7.3.zip</span>
  sbt clean assembly packArchiveZip</code></pre></div>

<p>After the build, there will be a package file gearpump-2.11-0.7.3.zip generated under output/target/ folder.</p>

<p><strong>NOTE:</strong>
  Please set JAVA_HOME environment before the build.</p>

<p>On linux:</p>

<div class="highlight"><pre><code class="language-bash">  <span class="nb">export </span><span class="nv">JAVA_HOME</span><span class="o">={</span>path/to/jdk/root/path<span class="o">}</span></code></pre></div>

<p>On Windows:</p>

<div class="highlight"><pre><code class="language-bash">  <span class="nb">set </span><span class="nv">JAVA_HOME</span><span class="o">={</span>path/to/jdk/root/path<span class="o">}</span></code></pre></div>

<p><strong>NOTE:</strong>
The build requires network connection. If you are behind an enterprise proxy, make sure you have set the proxy in your env before running the build commands.
For windows:</p>

<div class="highlight"><pre><code class="language-bash"><span class="nb">set </span><span class="nv">HTTP_PROXY</span><span class="o">=</span>http://host:port
<span class="nb">set </span><span class="nv">HTTPS_PROXY</span><span class="o">=</span> http://host:port</code></pre></div>

<p>For Linux:</p>

<div class="highlight"><pre><code class="language-bash"><span class="nb">export </span><span class="nv">HTTP_PROXY</span><span class="o">=</span>http://host:port
<span class="nb">export </span><span class="nv">HTTPS_PROXY</span><span class="o">=</span> http://host:port</code></pre></div>

<h3 id="gearpump-package-structure">Gearpump package structure</h3>

<p>You need to flatten the <code>.zip</code> file to use it. On Linux, you can</p>

<div class="highlight"><pre><code class="language-bash">unzip gearpump-2.11-0.7.3.zip</code></pre></div>

<p>After decompression, the directory structure looks like picture 1.</p>

<p><img src="img/layout.png" alt="Layout" /></p>

<p>Under bin/ folder, there are script files for Linux(bash script) and Windows(.bat script).</p>

<table>
  <thead>
    <tr>
      <th>script</th>
      <th>function</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>local</td>
      <td>You can start the Gearpump cluster in single JVM(local mode), or in a distributed cluster(cluster mode). To start the cluster in local mode, you can use the local /local.bat helper scripts, it is very useful for developing or troubleshooting.</td>
    </tr>
    <tr>
      <td>master</td>
      <td>To start Gearpump in cluster mode, you need to start one or more master nodes, which represent the global resource management center. master/master.bat is launcher script to boot the master node.</td>
    </tr>
    <tr>
      <td>worker</td>
      <td>To start Gearpump in cluster mode, you also need to start several workers, with each worker represent a set of local resources. worker/worker.bat is launcher script to start the worker node.</td>
    </tr>
    <tr>
      <td>services</td>
      <td>This script is used to start backend REST service and other services for frontend UI dashboard.</td>
    </tr>
  </tbody>
</table>

<p>Please check <a href="commandline.html">Command Line Syntax</a> for more information for each script.</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>
