<!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.2 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.2</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-docker.html">Docker</a><li>
              <li><a href="deployment-local.html">Local</a><li>
              <li><a href="deployment-standalone.html">Standalone</a></li>
              <li><a href="deployment-yarn.html">YARN</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.2.zip</span>
  sbt clean assembly packArchiveZip</code></pre></div>

<p>After the build, there will be a package file gearpump-2.11-0.7.2.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.2.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>
