blob: 4ce8893e637cbed3950033e3b766529ced419539 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Apache Mesos 0.19.0 Released</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="og:locale" content="en_US"/>
<meta property="og:type" content="website"/>
<meta property="og:title" content="Apache Mesos"/>
<meta property="og:site_name" content="Apache Mesos"/>
<meta property="og:url" content="http://mesos.apache.org/"/>
<meta property="og:image" content="http://mesos.apache.org/assets/img/mesos_logo_fb_preview.png"/>
<meta property="og:description"
content="Apache Mesos abstracts resources away from machines,
enabling fault-tolerant and elastic distributed systems
to easily be built and run effectively."/>
<meta name="twitter:card" content="summary"/>
<meta name="twitter:site" content="@ApacheMesos"/>
<meta name="twitter:title" content="Apache Mesos"/>
<meta name="twitter:image" content="http://mesos.apache.org/assets/img/mesos_logo_fb_preview.png"/>
<meta name="twitter:description"
content="Apache Mesos abstracts resources away from machines,
enabling fault-tolerant and elastic distributed systems
to easily be built and run effectively."/>
<link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
<link rel="alternate" type="application/atom+xml" title="Apache Mesos Blog" href="/blog/feed.xml">
<link href="../../assets/css/main.css" media="screen" rel="stylesheet" type="text/css" />
<!-- Google Analytics Magic -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-20226872-1']);
_gaq.push(['_setDomainName', 'apache.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<!-- magical breadcrumbs -->
<div class="topnav">
<div class="container">
<ul class="breadcrumb">
<li>
<div class="dropdown">
<a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
<li><a href="http://www.apache.org">Apache Homepage</a></li>
<li><a href="http://www.apache.org/licenses/">License</a></li>
<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
<li><a href="http://www.apache.org/security/">Security</a></li>
</ul>
</div>
</li>
<li><a href="http://mesos.apache.org">Apache Mesos</a></li>
<li><a href="/blog
/">Blog
</a></li>
</ul><!-- /.breadcrumb -->
</div><!-- /.container -->
</div><!-- /.topnav -->
<!-- navbar excitement -->
<div class="navbar navbar-default navbar-static-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#mesos-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>
<a class="navbar-brand" href="/"><img src="/assets/img/mesos_logo.png" alt="Apache Mesos logo"/></a>
</div><!-- /.navbar-header -->
<div class="navbar-collapse collapse" id="mesos-menu">
<ul class="nav navbar-nav navbar-right">
<li><a href="/gettingstarted/">Getting Started</a></li>
<li><a href="/blog/">Blog</a></li>
<li><a href="/documentation/latest/">Documentation</a></li>
<li><a href="/downloads/">Downloads</a></li>
<li><a href="/community/">Community</a></li>
</ul>
</div><!-- /#mesos-menu -->
</div><!-- /.container -->
</div><!-- /.navbar -->
<div class="content">
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="meta">
<span class="author">
<span class="author_contact">
<p><strong>Ben Mahler</strong></p>
<p><a href="http://twitter.com/bmahler">@bmahler</a></p>
</span>
</span>
<p><em>Posted June 12, 2014</em></p>
</div>
<div class="share">
<span class="social-share-button"><a href="https://twitter.com/share" class="twitter-share-button" data-via="apachemesos">Tweet</a></span>
<span><script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></span>
<span><div class="g-plusone" data-size="medium"></div></span>
<!-- Place this tag after the last +1 button tag. -->
<script type="text/javascript">
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
</script>
<script src="//platform.linkedin.com/in.js" type="text/javascript">
lang: en_US
</script>
<script type="IN/Share" data-counter="right"></script>
</div>
</div>
<div class="post col-md-9">
<h1>Apache Mesos 0.19.0 Released</h1>
<p>The latest Mesos release, 0.19.0 is now available for <a href="http://mesos.apache.org/downloads/">download</a>. This new version includes the following features and improvements:</p>
<ul>
<li>The master now persists the list of registered slaves in a durable replicated manner using the Registrar and the replicated log.</li>
<li>Alpha support for custom container technologies has been added with the <a href="https://github.com/apache/mesos/blob/0.19.0/src/slave/containerizer/external_containerizer.hpp#L74">ExternalContainerizer</a>.</li>
<li>Metrics reporting has been overhauled and is now exposed on &lt;ip:port>/metrics/snapshot.</li>
<li>Slave Authentication: optionally, only authenticated slaves can register with the master.</li>
<li>Numerous bug fixes and stability improvements.</li>
</ul>
<p>Full release notes are available on <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311242&amp;version=12326253">JIRA</a>.</p>
<h3>Registrar</h3>
<p>Mesos 0.19.0 introduces the <a href="https://cwiki.apache.org/confluence/display/MESOS/Registrar+Design+Document">&ldquo;Registrar&rdquo;</a>: the master now persists the list of registered slaves in a durable replicated manner. The previous lack of durable state was an intentional design decision that simplified failover and allowed masters to be run and migrated with ease. However, the stateless design had issues:</p>
<ul>
<li>In the event of a dual failure (slave fails while master is down), no lost task notifications are sent. This leads to a task running according to the framework but unknown to Mesos.</li>
<li>When a new master is elected, we may allow rogue slaves to re-register with the master. This leads to tasks running on the slave that are not known to the framework.</li>
</ul>
<p>Persisting the list of registered slaves allows failed over masters to detect slaves that do not re-register, and notify frameworks accordingly. It also allows us to prevent rogue slaves from re-registering; terminating the rogue tasks in the process.</p>
<p>The state is persisted using the <a href="http://mesos.apache.org/blog/mesos-0-17-0-released-featuring-autorecovery/">replicated log</a> (available since 0.9.0).</p>
<h3>External Containerization</h3>
<p>As <a href="http://mesos.apache.org/blog/mesos-0-18-0-released/">alluded to</a> during the containerization / isolation refactor in 0.18.0, the ExternalContainerizer has landed in this release. This provides <strong>alpha</strong> level support for custom containerization.</p>
<p><img src="/assets/img/documentation/containerizer_isolator_api.png" alt="Mesos Containerizer Isolator APIs" /></p>
<p>Developers can implement their own external containerizers to provide support for custom container technologies. Initial Docker support is now available through some community driven external containerizers: <a href="https://github.com/duedil-ltd/mesos-docker-containerizer">Docker Containerizer for Mesos</a> by Tom Arnfeld and <a href="https://github.com/mesosphere/deimos">Deimos</a> by Jason Dusek. Please reach out on the mailing lists with questions!</p>
<h3>Metrics</h3>
<p>Previously, Mesos components had to use custom metrics code and custom HTTP endpoints for exposing metrics. This made it difficult to expose additional system metrics and often required having an endpoint for each libprocess Process (Actor) for which metrics were desired. Having metrics spread across endpoints was operationally complex.</p>
<p>We needed a consistent, simple, and global way to expose metrics, which led to the creation of a metrics library within <a href="https://github.com/apache/mesos/tree/0.19.0/3rdparty/libprocess">libprocess</a>. All metrics are now exposed via /metrics/snapshot. The /stats.json endpoint remains for backwards compatibility.</p>
<h3>Upgrading</h3>
<p>For backwards compatibility, the &ldquo;Registrar&rdquo; will be enabled in a phased manner. By default, the &ldquo;Registrar&rdquo; is write-only in 0.19.0 and will be read/write in 0.20.0.</p>
<p>If running in high-availability mode with ZooKeeper, operators must now specify the <code>--work_dir</code> for the master, along with the <code>--quorum</code> size of the ensemble of masters. This means adding or removing masters must be done carefully! The best practice is to only ever add or remove a single master at a time and to allow a small amount of time for the replicated log to catch up on the new master. Maintenance documentation will be added to reflect this.</p>
<p>Please refer to the <a href="http://mesos.apache.org/documentation/latest/upgrades/">upgrades</a> document, which details how to perform an upgrade from 0.18.x.</p>
<h3>Future Work</h3>
<p>Thanks to the Registrar, reconciliation primitives can now be provided to ensure that the state of tasks between Mesos and frameworks is kept consistent. This will remove the need for frameworks to implement out-of-band task reconciliation to inspect the state of slaves. Reconciliation work is being tracked at <a href="https://issues.apache.org/jira/browse/MESOS-1407">MESOS-1407</a>.</p>
<p>The addition of state through the Registrar opens up a rich set of possible features that were previously not possible due to the lack of persistent state in the master. These include:</p>
<ul>
<li>Cluster maintenance primitives (<a href="https://issues.apache.org/jira/browse/MESOS-1474">MESOS-1474</a>)</li>
<li>Repair automation (<a href="https://issues.apache.org/jira/browse/MESOS-695">MESOS-695</a>)</li>
<li>Global resource reservations</li>
</ul>
<h3>Getting Involved</h3>
<p>We encourage you to try out this release, and let us know what you think and if you hit any issues on the user mailing list. You can also get in touch with us via <a href="http://twitter.com/ApacheMesos">@ApacheMesos</a> or via <a href="http://mesos.apache.org/community/">mailing lists and IRC</a>.</p>
<h3>Thanks</h3>
<p>Thanks to the 32 contributors who made 0.19.0 possible:</p>
<p>Ashutosh Jain, Adam B, Alexandra Sava, Anton Lindström, Archana kumari, Benjamin Hindman, Benjamin Mahler, Bernardo Gomez Palacio, Bernd Mathiske, Charlie Carson, Chengwei Yang, Chi Zhang, Dave Lester, Dominic Hamon, Ian Downes, Isabel Jimenez, Jake Farrell, Jameel, Al-Aziz, Jiang Yan Xu, Jie Yu, Nikita Vetoshkin, Niklas Q. Nielsen, Ritwik Yadav, Sam Taha, Steven Phung, Till Toenshoff, Timothy St. Clair, Tobi Knaup, Tom Arnfeld, Tom Galloway, Vinod Kone, Vinson Lee</p>
</div>
</div>
</div><!-- /.container -->
</div><!-- /.content -->
<hr>
<!-- footer -->
<div class="footer">
<div class="container">
<div class="col-md-4 social-blk">
<span class="social">
<a href="https://twitter.com/ApacheMesos"
class="twitter-follow-button"
data-show-count="false" data-size="large">Follow @ApacheMesos</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
<a href="https://twitter.com/intent/tweet?button_hashtag=mesos"
class="twitter-hashtag-button"
data-size="large"
data-related="ApacheMesos">Tweet #mesos</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
</span>
</div>
<div class="col-md-8 trademark">
<p>&copy; 2012-2017 <a href="http://apache.org">The Apache Software Foundation</a>.
Apache Mesos, the Apache feather logo, and the Apache Mesos project logo are trademarks of The Apache Software Foundation.
<p>
</div>
</div><!-- /.container -->
</div><!-- /.footer -->
<!-- JS -->
<script src="//code.jquery.com/jquery-1.11.0.min.js" type="text/javascript"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js" type="text/javascript"></script>
</body>
</html>