
<!DOCTYPE html>

<html>

<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="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="container">
<div class="row">
<div class="col-md-8">
<h1>Release 0.5.0-beta available</h1>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<p><img src="releases/0.5.0.jpg" alt="crater-lake-haiku"></p>
<p>Apache Hadoop Ozone 0.5.0-beta is released with following features:</p>
<ul>
<li>O3FS - S3A based file system semantics</li>
<li>Able to handle 1 billion objects</li>
<li>Network topology awareness for block placement</li>
<li>GDPR Right to Erasure</li>
</ul>
<p>This is a beta release and not production ready.</p>
<!-- raw HTML omitted -->

</div>
<div class="col-md-4" style="padding: 20px;">
    
       <p>
           <a href="https://www.apache.org/dyn/closer.cgi/hadoop/ozone/ozone-0.5.0-beta/hadoop-ozone-0.5.0-beta.tar.gz"
              class="btn btn-success">Download tar.gz</a></p>
       <p>
           (<a href="https://downloads.apache.org/hadoop/ozone/ozone-0.5.0-beta/hadoop-ozone-0.5.0-beta.tar.gz.mds">checksum</a>
           <a href="https://downloads.apache.org/hadoop/ozone/ozone-0.5.0-beta/hadoop-ozone-0.5.0-beta.tar.gz.asc">signature</a>)
       </p>
       <p>
           <a href="https://www.apache.org/dyn/closer.cgi/hadoop/ozone/ozone-0.5.0-beta/hadoop-ozone-0.5.0-beta-src.tar.gz"
              class="btn btn-warning">Download src</a></p>
       <p>
           (<a href="https://downloads.apache.org/hadoop/ozone/ozone-0.5.0-beta/hadoop-ozone-0.5.0-beta-src.tar.gz.mds">checksum</a>
           <a href="https://downloads.apache.org/hadoop/ozone/ozone-0.5.0-beta/hadoop-ozone-0.5.0-beta-src.tar.gz.asc">signature</a>)
       </p>
        
    
    <p><small>2020 Mar 24 </small></p>

</div>
</div>
</div>

<footer>
    <div class="container">

        <div class="col-md-12 trademark">
            <p>© 2024 The Apache Software Foundation <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>

