
<!DOCTYPE html>

<html>

<head>
	<meta name="generator" content="Hugo 0.76.5" />
    <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="Object store for Hadoop">
    <meta name="keywords" content="hadoop, ozone, hdds, objectstore, scale"/>
    <meta name="robots" content="index,follow"/>
    <meta name="language" content="en"/>

    <title>Apache Ozone</title>

    <base href="https://ozone.apache.org/">

    <link rel="canonical" href="https://ozone.apache.org">

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
          integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
    <link rel="stylesheet" href="style.css">

    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
    <link rel="manifest" href="/site.webmanifest">
    <link rel="mask-icon" href="/safari-pinned-tab.svg">
    <link rel="shortcut icon" href="/favicon.ico">
    <meta name="msapplication-TileColor" content="#da532c">
    <meta name="theme-color" content="#ffffff">

    
    <script>
      var _paq = window._paq = window._paq || [];
      

       
      _paq.push(['disableCookies']);
      

      _paq.push(['trackPageView']);
      _paq.push(['enableLinkTracking']);
      (function() {
        var u="//analytics.apache.org/";
        _paq.push(['setTrackerUrl', u+'matomo.php']);
        _paq.push(['setSiteId', '34']);
        var d=document, g=d.createElement('script'),
s=d.getElementsByTagName('script')[0];
        g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
      })();
    </script>
    

</head>

<body>


<div class="topnav">
    <div class="container">
        <ul class="breadcrumb col-md-4">
            <li>
                <img class="asf-logo" src="asf_feather.png"/>
                <a href="https://www.apache.org">Apache Software Foundation</a>
            </li>
        </ul>
        <div class="col-md-8">
            <ul class="pull-right breadcrumb">
                <li><a href="https://www.apache.org/licenses/">License</a></li>
                <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                <li><a href="https://www.apache.org/events/current-event">Events</a></li>
                <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
                <li><a href="https://www.apache.org/security/">Security</a></li>
                <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a></li>
        </ul>
        </div>
    </div>

    <nav class="navbar navbar-default navbar-static-top" role="navigation">
        <div class="container">
            <div class="navbar-header">
                <ul class="nav navbar-nav navbar-brand">
                    <li>
                        <img src="ozone-logo.png" alt="Ozone logo"/>
                        <a href="https://ozone.apache.org/">Apache Ozone&trade;</a>
                    </li>
                </ul>
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
                        data-target="#ozone-menu" aria-expanded="false">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
            </div>

            <div id="ozone-menu" class="collapse navbar-collapse">
                <ul class="nav navbar-nav navbar-right">
                    <li><a href="faq">FAQ</a></li>
                    <li><a href="downloads">Download</a></li>
                    <li><a href="docs">Documentation</a></li>
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Community <span class="caret"></span></a>
                         <ul class="dropdown-menu">
                            <li><a href="community">Get involved</a></li>
                            <li><a href="events">Events</a></li>
                         </ul>
                    </li>
                    <li><a href="https://github.com/apache/ozone">Source</a></li>
                    <li><a href="https://cwiki.apache.org/confluence/display/OZONE">Wiki</a></li>
                </ul>
            </div>

    </nav>

    <div style="max-height: 200px; overflow: hidden;">
      <img src="sunrise-ozone.jpg" style="width: 100%; left:0px;"/>
    </div>

</div>

</div>

<div class="main-section">

</div>

<div class="whatis">
    <div class="container">
        <div class="row header">
            <p class="lead">
                Apache Ozone is a highly scalable, distributed storage for Analytics, Big data and Cloud Native applications. Ozone supports S3 compatible object APIs as well as a Hadoop Compatible File System implementation. It is optimized for both efficient object store and file system operations. </p> <p class="lead">It is built on a highly available, replicated block storage layer called Hadoop Distributed Data Store (HDDS).</p>
            <p class="lead">Applications using frameworks like Apache Spark, YARN and Hive work natively without any modifications.
            </p>
            </p>
            <p></p>
            <p class="lead">Ozone is now Generally Available(GA) with <a href="release/1.3.0/">1.3.0</a> release.
            </p>
            <p></p>
        </div>
    </div>
</div>


<div class="main-section feature-list-group" style="padding: 80px;">
    <div class="container">
        <div class="row feature-list">
            <div class="col-md-4 col-sm-4 feature-item">

                <h4><span class="glyphicon glyphicon-signal" aria-hidden="true"></span> Scalable</h4>
                <p>
                 Ozone is designed to scale to tens of billions of files and
                 blocks and, in the future, even more.
                </p>
      
                <p></p>
            </div>
            <div class="col-md-4 col-sm-4 feature-item">
                <h4><span class="glyphicon glyphicon-link" aria-hidden="true"></span>
                   Consistent</h4>
                <p>
                    Ozone is a strongly consistent distributed storage. This consistency is achieved by using protocols like RAFT.
                </p>
            </div>
            <div class="col-md-4 col-sm-4 feature-item">
                <h4><span class="glyphicon glyphicon-cloud" aria-hidden="true"></span>Cloud-native</h4>
                <p>Ozone is designed to work well in containerized environments like YARN and Kubernetes.
                </p>
            </div>

                 <div class="col-md-4 col-sm-4 feature-item">
                <h4><span class="glyphicon glyphicon-tower" aria-hidden="true"></span>Secure</h4>
                <p>Ozone integrates with kerberos infrastructure for access control and supports TDE and on-wire encryption.
                </p>
            </div>

 <div class="col-md-4 col-sm-4 feature-item">
                <h4><span class="glyphicon glyphicon-asterisk
" aria-hidden="true"></span>Multi-Protocol Support</h4>
                <p>Ozone supports different protocols like S3 
                and Hadoop File System APIs.

                </p>
            </div>


 <div class="col-md-4 col-sm-4 feature-item">
                <h4><span class="glyphicon glyphicon-random
" aria-hidden="true"></span>Highly Available</h4>
                <p>Ozone is a fully replicated system that is designed to survive multiple failures.
                </p>
            </div>

        </div>


    </div>
</div>




<footer>
    <div class="container">

        <div class="col-md-12 trademark">
            <p>&copy; 2022 <a href="http://apache.org">The Apache Software Foundation</a>,<br/>
                Apache, Apache Hadoop, Apache Ozone, the Apache feather logo, are trademarks of The Apache Software Foundation.
            <p>
        </div>
    </div>
</footer>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"
        integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS"
        crossorigin="anonymous"></script>


</body>
</html>

