

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Documentation</title>
    <meta name="description" content="Apache Submarine Documentation">
    <meta name="author" content="The Apache Software Foundation">

    <!-- Enable responsive viewport -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />

    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <!-- Le styles -->
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons">
    <link href="/assets/themes/submarine/bootstrap/css/bootstrap.css" rel="stylesheet">
    <link href="/assets/themes/submarine/css/style.css?body=1" rel="stylesheet" type="text/css">
    <link href="/assets/themes/submarine/css/syntax.css" rel="stylesheet"  type="text/css" media="screen" /> 
    <!-- Le fav and touch icons -->
    <!-- Update these with your own images
    <link rel="shortcut icon" href="images/favicon.ico">
    <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
    <link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png">
    -->
    <link rel="apple-touch-icon" sizes="180x180" href="/assets/themes/submarine/img/favicon/apple-touch-icon.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/assets/themes/submarine/img/favicon/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="16x16" href="/assets/themes/submarine/img/favicon/favicon-16x16.png">
    <link rel="icon" type="image/png" href="/assets/themes/submarine/img/favicon/favicon.ico">
    <link rel="manifest" href="/assets/themes/submarine/img/favicon/manifest.json">
    <link rel="mask-icon" href="/assets/themes/submarine/img/favicon/safari-pinned-tab.svg" color="#438bc9">
    <meta name="theme-color" content="#ffffff">

    <!-- Js -->
    <script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
    <script src="https://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-2.5.0.js"></script>
    <script src="/assets/themes/submarine/bootstrap/js/bootstrap.min.js"></script>
    <script src="/assets/themes/submarine/js/docs.js"></script>
    <script src="/assets/themes/submarine/js/anchor.min.js"></script>
    <script src="/assets/themes/submarine/js/moment.min.js"></script>
    <script src="/assets/themes/submarine/js/helium.controller.js"></script>
    <script src="/assets/themes/submarine/js/medium.controller.js"></script>

    <!-- atom & rss feed -->
    <link href="/atom.xml" type="application/atom+xml" rel="alternate" title="Sitewide ATOM Feed">
    <link href="/rss.xml" type="application/rss+xml" rel="alternate" title="Sitewide RSS Feed">
  </head>

  <body>
    
    <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
        <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="/">
        <img src="/assets/themes/submarine/img/submarine_white_logo.png" style="margin-top: -6px;" width="80" alt="I'm submarine">
        <span style="margin-left: 0px;"> Apache Submarine </span>
        <!-- <span style="margin-left: 4px; font-size: 16px; font-family: Arial;">0.4.0</span> -->
      </a>
    </div>

    <nav class="navbar-collapse collapse" role="navigation">
      <ul class="nav navbar-nav navbar-right">
        <!-- Quick Start -->
        <li class="docs">
          <a href="#" data-toggle="dropdown" class="dropdown-toggle">Quick Start<b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="https://github.com/apache/submarine/blob/master/docs/userdocs/yarn">Submarine on YARN</a></li>
            <li><a href="https://github.com/apache/submarine/blob/master/docs/userdocs/k8s">Submarine on K8s</a></li>
          </ul>
        </li>

        <!-- Download -->
        <li><a href="/download.html">Download</a></li>

        <!-- Docs -->
        <li><a href="https://github.com/apache/submarine/tree/master/docs">Docs</a></li>

        <!-- GitHub -->
        <li>
          <a href="https://github.com/apache/submarine">GitHub</a>
        </li>

        <!-- Community -->
        <li class="docs">
          <a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="/community/contributors.html">Contributors</a></li>
            <li><a href="/community/member.html">Member</a></li>
          </ul>
        </li>

        <!-- Apache -->
        <li class="docs">
          <a href="#" data-toggle="dropdown" class="dropdown-toggle">Apache<b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="http://www.apache.org/foundation/how-it-works.html">Apache Software Foundation</a></li>
            <li><a href="http://www.apache.org/licenses/">Apache License</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
            <li><a href="/assets.html">Assets</a></li>
            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
          </ul>
        </li>
      </ul>
    </nav>
  </div>
</div>




    <div class="content">
      

<!--<div class="hero-unit Documentation">
  <h1></h1>
</div>
-->

<div class="row">
  <div class="col-md-12">
    <!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<h1>Apache Submarine Documentation</h1>

<ul>
<li><a href="docs/0.3.0">Submarine 0.3.0</a></li>
</ul>

  </div>
</div>


    </div>

    


    
    <footer>
      <!-- <p>&copy; 2020 The Apache Software Foundation</p>-->
    </footer>
  </body>
</html>

