| |
| |
| <!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">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="../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="../concept.html">Concepts</a></li> |
| <li class="breadcrumb-item active" aria-current="page">Ozone Manager</li> |
| </ol> |
| </nav> |
| |
| <div class="col-md-9"> |
| <h1>Ozone Manager</h1> |
| </div> |
| |
| |
| |
| <!--- |
| 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>Ozone Manager (OM) is the namespace manager for Ozone.</p> |
| |
| <p>This means that when you want to write some data, you ask Ozone |
| Manager for a block and Ozone Manager gives you a block and remembers that |
| information. When you want to read that file back, you need to find the |
| address of the block and Ozone Manager returns it you.</p> |
| |
| <p>Ozone Manager also allows users to organize keys under a volume and bucket. |
| Volumes and buckets are part of the namespace and managed by Ozone Manager.</p> |
| |
| <p>Each ozone volume is the root of an independent namespace under OM. |
| This is very different from HDFS which provides a single rooted file system.</p> |
| |
| <p>Ozone’s namespace is a collection of volumes or is a forest instead of a |
| single rooted tree as in HDFS. This property makes it easy to deploy multiple |
| OMs for scaling.</p> |
| |
| <h2 id="ozone-manager-metadata">Ozone Manager Metadata</h2> |
| |
| <p>OM maintains a list of volumes, buckets, and keys. |
| For each user, it maintains a list of volumes. |
| For each volume, the list of buckets and for each bucket the list of keys.</p> |
| |
| <p>Ozone Manager will use Apache Ratis(A Raft protocol implementation) to |
| replicate Ozone Manager state. This will ensure High Availability for Ozone.</p> |
| |
| <h2 id="ozone-manager-and-storage-container-manager">Ozone Manager and Storage Container Manager</h2> |
| |
| <p>The relationship between Ozone Manager and Storage Container Manager is best |
| understood if we trace what happens during a key write and key read.</p> |
| |
| <h3 id="key-write">Key Write</h3> |
| |
| <ul> |
| <li><p>To write a key to Ozone, a client tells Ozone manager that it would like to |
| write a key into a bucket that lives inside a specific volume. Once Ozone |
| Manager determines that you are allowed to write a key to the specified bucket, |
| OM needs to allocate a block for the client to write data.</p></li> |
| |
| <li><p>To allocate a block, Ozone Manager sends a request to Storage Container |
| Manager (SCM); SCM is the manager of data nodes. SCM picks three data nodes |
| into which client can write data. SCM allocates the block and returns the |
| block ID to Ozone Manager.</p></li> |
| |
| <li><p>Ozone manager records this block information in its metadata and returns the |
| block and a block token (a security permission to write data to the block) |
| to the client.</p></li> |
| |
| <li><p>The client uses the block token to prove that it is allowed to write data to |
| the block and writes data to the data node.</p></li> |
| |
| <li><p>Once the write is complete on the data node, the client will update the block |
| information on |
| Ozone manager.</p></li> |
| </ul> |
| |
| <h3 id="key-reads">Key Reads</h3> |
| |
| <ul> |
| <li>Key reads are simpler, the client requests the block list from the Ozone |
| Manager</li> |
| <li>Ozone manager will return the block list and block tokens which |
| allows the client to read the data from data nodes.</li> |
| <li>Client connects to the data node and presents the block token and reads |
| the data from the data node.</li> |
| </ul> |
| |
| |
| |
| <a class="btn btn-success btn-lg" href="../concept/hdds.html">Next >></a> |
| |
| </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> |