| |
| |
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| |
| <meta name="description" content="Hadoop Ozone Documentation"> |
| |
| <title>Documentation for Apache Hadoop Ozone</title> |
| |
| |
| <link href="../css/bootstrap.min.css" rel="stylesheet"> |
| |
| |
| <link href="../css/ozonedoc.css" rel="stylesheet"> |
| |
| </head> |
| |
| |
| <body> |
| |
| |
| <nav class="navbar navbar-inverse navbar-fixed-top"> |
| <div class="container-fluid"> |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#sidebar" 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 href="#" class="navbar-left" style="height: 50px; padding: 5px 5px 5px 0;"> |
| <img src="../ozone-logo-small.png" width="40"/> |
| </a> |
| <a class="navbar-brand hidden-xs" href="#"> |
| Apache Hadoop Ozone/HDDS documentation |
| </a> |
| <a class="navbar-brand visible-xs-inline" href="#">Hadoop Ozone</a> |
| </div> |
| <div id="navbar" class="navbar-collapse collapse"> |
| <ul class="nav navbar-nav navbar-right"> |
| <li><a href="https://github.com/apache/hadoop-ozone">Source</a></li> |
| <li><a href="https://hadoop.apache.org">Apache Hadoop</a></li> |
| <li><a href="https://apache.org">ASF</a></li> |
| </ul> |
| </div> |
| </div> |
| </nav> |
| |
| |
| <div class="container-fluid"> |
| <div class="row"> |
| |
| <div class="col-sm-2 col-md-2 sidebar" id="sidebar"> |
| <ul class="nav nav-sidebar"> |
| |
| |
| |
| <li class=""> |
| |
| <a href="../index.html"> |
| |
| |
| |
| <span>Overview</span> |
| </a> |
| </li> |
| |
| |
| |
| <li class=""> |
| |
| <a href="../start.html"> |
| |
| |
| |
| <span>Getting Started</span> |
| </a> |
| </li> |
| |
| |
| |
| <li class=""> |
| |
| <a href="../shell.html"> |
| |
| |
| |
| <span>Command Line Interface</span> |
| </a> |
| </li> |
| |
| |
| |
| <li class=""> |
| |
| <a href="../interface.html"> |
| |
| |
| |
| <span>Programming Interfaces</span> |
| </a> |
| </li> |
| |
| |
| |
| <li class=""> |
| |
| <a href="../gdpr.html"> |
| |
| |
| |
| <span>GDPR</span> |
| </a> |
| </li> |
| |
| |
| |
| <li class=""> |
| |
| <a href="../security.html"> |
| |
| |
| |
| <span>Security</span> |
| </a> |
| </li> |
| |
| |
| |
| <li class=""> |
| |
| <a href="../concept.html"> |
| |
| |
| |
| <span>Concepts</span> |
| </a> |
| </li> |
| |
| |
| |
| <li class=""> |
| |
| <a href="../beyond.html"> |
| |
| |
| |
| <span>Beyond Basics</span> |
| </a> |
| </li> |
| |
| |
| |
| <li class=""> |
| |
| <a href="../tools.html"> |
| |
| |
| |
| <span>Tools</span> |
| </a> |
| </li> |
| |
| |
| |
| <li class=""> |
| |
| <a href="../recipe.html"> |
| |
| |
| |
| <span>Recipes</span> |
| </a> |
| </li> |
| |
| |
| <li class="visible-xs"><a href="#">References</a> |
| <ul class="nav"> |
| <li><a href="https://github.com/apache/hadoop"><span class="glyphicon glyphicon-new-window" aria-hidden="true"></span> Source</a></li> |
| <li><a href="https://hadoop.apache.org"><span class="glyphicon glyphicon-new-window" aria-hidden="true"></span> Apache Hadoop</a></li> |
| <li><a href="https://apache.org"><span class="glyphicon glyphicon-new-window" aria-hidden="true"></span> ASF</a></li> |
| </ul></li> |
| </ul> |
| |
| </div> |
| |
| <div class="col-sm-10 col-sm-offset-2 col-md-10 col-md-offset-2 main"> |
| |
| |
| |
| <div class="col-md-9"> |
| <nav aria-label="breadcrumb"> |
| <ol class="breadcrumb"> |
| <li class="breadcrumb-item"><a href="../">Home</a></li> |
| <li class="breadcrumb-item" aria-current="page"><a href="../beyond.html">Beyond Basics</a></li> |
| <li class="breadcrumb-item active" aria-current="page">Ozone Containers</li> |
| </ol> |
| </nav> |
| |
| |
| |
| <div class="pull-right"> |
| |
| |
| |
| </div> |
| |
| |
| <div class="col-md-9"> |
| <h1>Ozone Containers</h1> |
| |
| |
| |
| <!--- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You 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. |
| --> |
| |
| <p>Docker heavily is used at the ozone development with three principal use-cases:</p> |
| |
| <ul> |
| <li><strong>dev</strong>: |
| |
| <ul> |
| <li>We use docker to start local pseudo-clusters (docker provides unified environment, but no image creation is required)</li> |
| </ul></li> |
| <li><strong>test</strong>: |
| |
| <ul> |
| <li>We create docker images from the dev branches to test ozone in kubernetes and other container orchestrator system</li> |
| <li>We provide <em>apache/ozone</em> images for each release to make it easier for evaluation of Ozone. |
| These images are <strong>not</strong> created <strong>for production</strong> usage.</li> |
| </ul></li> |
| </ul> |
| |
| <div class="alert alert-warning" role="alert"> |
| We <b>strongly</b> recommend that you create your own custom images when you |
| deploy ozone into production using containers. Please treat all the standard |
| shipped container images and k8s resources as examples and guides to help you |
| customize your own deployment. |
| </div> |
| |
| <ul> |
| <li><strong>production</strong>: |
| |
| <ul> |
| <li>We have documentation on how you can create your own docker image for your production cluster.</li> |
| </ul></li> |
| </ul> |
| |
| <p>Let’s check out each of the use-cases in more detail:</p> |
| |
| <h2 id="development">Development</h2> |
| |
| <p>Ozone artifact contains example docker-compose directories to make it easier to start Ozone cluster in your local machine.</p> |
| |
| <p>From distribution:</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">cd compose/ozone |
| docker-compose up -d</code></pre></div> |
| <p>After a local build:</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">cd hadoop-ozone/dist/target/ozone-*/compose |
| docker-compose up -d</code></pre></div> |
| <p>These environments are very important tools to start different type of Ozone clusters at any time.</p> |
| |
| <p>To be sure that the compose files are up-to-date, we also provide acceptance test suites which start |
| the cluster and check the basic behaviour.</p> |
| |
| <p>The acceptance tests are part of the distribution, and you can find the test definitions in <code>smoketest</code> directory.</p> |
| |
| <p>You can start the tests from any compose directory:</p> |
| |
| <p>For example:</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">cd compose/ozone |
| ./test.sh</code></pre></div> |
| <h3 id="implementation-details">Implementation details</h3> |
| |
| <p><code>compose</code> tests are based on the apache/hadoop-runner docker image. The image itself does not contain |
| any Ozone jar file or binary just the helper scripts to start ozone.</p> |
| |
| <p>hadoop-runner provdes a fixed environment to run Ozone everywhere, but the ozone distribution itself |
| is mounted from the including directory:</p> |
| |
| <p>(Example docker-compose fragment)</p> |
| |
| <pre><code> scm: |
| image: apache/hadoop-runner:jdk11 |
| volumes: |
| - ../..:/opt/hadoop |
| ports: |
| - 9876:9876 |
| |
| </code></pre> |
| |
| <p>The containers are configured based on environment variables, but because the same environment |
| variables should be set for each containers we maintain the list of the environment variables |
| in a separated file:</p> |
| |
| <pre><code> scm: |
| image: apache/hadoop-runner:jdk11 |
| #... |
| env_file: |
| - ./docker-config |
| </code></pre> |
| |
| <p>The docker-config file contains the list of the required environment variables:</p> |
| |
| <pre><code>OZONE-SITE.XML_ozone.om.address=om |
| OZONE-SITE.XML_ozone.om.http-address=om:9874 |
| OZONE-SITE.XML_ozone.scm.names=scm |
| #... |
| </code></pre> |
| |
| <p>As you can see we use naming convention. Based on the name of the environment variable, the |
| appropriate hadoop config XML (<code>ozone-site.xml</code> in our case) will be generated by a |
| <a href="https://github.com/apache/hadoop/tree/docker-hadoop-runner-latest/scripts">script</a> which is |
| included in the <code>hadoop-runner</code> base image.</p> |
| |
| <p>The <a href="https://github.com/apache/hadoop/blob/docker-hadoop-runner-latest/scripts/starter.sh">entrypoint</a> |
| of the <code>hadoop-runner</code> image contains a helper shell script which triggers this transformation and |
| can do additional actions (eg. initialize scm/om storage, download required keytabs, etc.) |
| based on environment variables.</p> |
| |
| <h2 id="test-staging">Test/Staging</h2> |
| |
| <p>The <code>docker-compose</code> based approach is recommended only for local test, not for multi node cluster. |
| To use containers on a multi-node cluster we need a Container Orchestrator like Kubernetes.</p> |
| |
| <p>Kubernetes example files are included in the <code>kubernetes</code> folder.</p> |
| |
| <p><em>Please note</em>: all the provided images are based the <code>hadoop-runner</code> image which contains all the |
| required tool for testing in staging environments. For production we recommend to create your own, |
| hardened image with your own base image.</p> |
| |
| <h3 id="test-the-release">Test the release</h3> |
| |
| <p>The release can be tested with deploying any of the example clusters:</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">cd kubernetes/examples/ozone |
| kubectl apply -f</code></pre></div> |
| <p>Plese note that in this case the latest released container will be downloaded from the dockerhub.</p> |
| |
| <h3 id="test-the-development-build">Test the development build</h3> |
| |
| <p>To test a development build you can create your own image and upload it to your own docker registry:</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">mvn clean install -DskipTests -Pdocker-build,docker-push -Ddocker.image<span style="color:#f92672">=</span>myregistry:9000/name/ozone</code></pre></div> |
| <p>The configured image will be used in all the generated kubernetes resources files (<code>image:</code> keys are adjusted during the build)</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">cd kubernetes/examples/ozone |
| kubectl apply -f</code></pre></div> |
| <h2 id="production">Production</h2> |
| |
| <div class="alert alert-danger" role="alert"> |
| We <b>strongly</b> recommend to use your own image in your production cluster |
| and |
| adjust base image, umask, security settings, user settings according to your own requirements. |
| </div> |
| |
| <p>You can use the source of our development images as an example:</p> |
| |
| <ul> |
| <li><a href="https://github.com/apache/hadoop/blob/docker-hadoop-runner-jdk11/Dockerfile">Base image</a></li> |
| <li><a href="https://github.com/apache/hadoop/blob/trunk/hadoop-ozone/dist/src/main/docker/Dockerfile">Docker image</a></li> |
| </ul> |
| |
| <p>Most of the elements are optional and just helper function but to use the provided example |
| kubernetes resources you may need the scripts from |
| <a href="https://github.com/apache/hadoop/tree/docker-hadoop-runner-jdk11/scripts">here</a></p> |
| |
| <ul> |
| <li>The two python scripts convert environment variables to real hadoop XML config files</li> |
| <li>The start.sh executes the python scripts (and other initialization) based on environment variables.</li> |
| </ul> |
| |
| <h2 id="containers">Containers</h2> |
| |
| <p>Ozone related container images and source locations:</p> |
| |
| <table class="table table-dark"> |
| <thead> |
| <tr> |
| <th scope="col">#</th> |
| <th scope="col">Container</th> |
| <th scope="col">Repository</th> |
| <th scope="col">Base</th> |
| <th scope="col">Branch</th> |
| <th scope="col">Tags</th> |
| <th scope="col">Comments</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <th scope="row">1</th> |
| <td>apache/ozone</td> |
| <td>https://github.com/apache/hadoop-docker-ozone</td> |
| <td>ozone-... </td> |
| <td>hadoop-runner</td> |
| <td>0.3.0,0.4.0,0.4.1</td> |
| <td>For each Ozone release we create new release tag.</td> |
| </tr> |
| <tr> |
| <th scope="row">2</th> |
| <td>apache/hadoop-runner </td> |
| <td>https://github.com/apache/hadoop</td> |
| <td>docker-hadoop-runner</td> |
| <td>centos</td> |
| <td>jdk11,jdk8,latest</td> |
| <td>This is the base image used for testing Hadoop Ozone. |
| This is a set of utilities that make it easy for us run ozone.</td> |
| </tr> |
| <!---tr> |
| <th scope="row">3</th> |
| <td>apache/ozone:build (WIP)</td> |
| <td>https://github.com/apache/hadoop-docker-ozone</td> |
| <td>ozone-build </td> |
| <td> </td> |
| <td> </td> |
| <td>TODO: Add more documentation here.</td> |
| </tr--> |
| </tbody> |
| </table> |
| |
| |
| |
| <a class="btn btn-success btn-lg" href="../beyond/dockercheatsheet.html">Next >></a> |
| |
| </div> |
| |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| |
| <script src="../js/jquery-3.4.1.min.js"></script> |
| <script src="../js/ozonedoc.js"></script> |
| <script src="../js/bootstrap.min.js"></script> |
| |
| |
| </body> |
| |
| </html> |