You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ti...@apache.org on 2015/12/17 12:58:05 UTC

svn commit: r1720526 [4/5] - in /mesos/site/publish: ./ assets/css/ blog/ community/ community/user-groups/ documentation/ documentation/allocation-module/ documentation/architecture/ documentation/attributes-resources/ documentation/authentication/ do...

Modified: mesos/site/publish/documentation/release-guide/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/release-guide/index.html?rev=1720526&r1=1720525&r2=1720526&view=diff
==============================================================================
--- mesos/site/publish/documentation/release-guide/index.html (original)
+++ mesos/site/publish/documentation/release-guide/index.html Thu Dec 17 11:58:04 2015
@@ -162,6 +162,7 @@ the master, slave, and configure flags.<
 a live cluster from the previous release version to this release version.</p></li>
 <li><p>If this is a major release, please ensure that user documentation has been
 added for any new features.</p></li>
+<li><p>Make sure that for any updates of the API, specifically the scheduler API, the public mesos protobuf definitions are part of both, <code>include/mesos</code> as well as <code>include/mesos/v1</code>. NOTE: This might actually demand code updates if any omissions were identified.</p></li>
 </ol>
 
 
@@ -192,7 +193,7 @@ It is recommended to use the <code>suppo
    You may need to modify your local copy of tag.sh for it to complete successfully.</p></blockquote></li>
 <li><p>It is not uncommon to release multiple release candidates, with increasing release candidate
 version, if there are bugs found.</p></li>
-<li><p>Update to the <em>next</em> Mesos version in <code>configure.ac</code>: change <code>AC_INIT([mesos], [X.Y.Z]))</code> and commit.</p></li>
+<li><p>Update to the <em>next</em> Mesos version in <code>configure.ac</code>: change <code>AC_INIT([mesos], [X.Y.Z]))</code>, as well as in <code>CMakeLists.txt</code>: change <code>set(MESOS_MAJOR_VERSION X)</code>, <code>set(MESOS_MINOR_VERSION Y)</code>, <code>set(MESOS_PATCH_VERSION Z)</code> and then commit.</p></li>
 </ol>
 
 

Modified: mesos/site/publish/documentation/reservation/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/reservation/index.html?rev=1720526&r1=1720525&r2=1720526&view=diff
==============================================================================
--- mesos/site/publish/documentation/reservation/index.html (original)
+++ mesos/site/publish/documentation/reservation/index.html Thu Dec 17 11:58:04 2015
@@ -89,10 +89,7 @@ which enabled operators to specify the r
 This was extended with <strong>dynamic reservation</strong> in 0.23.0 which enabled operators
 and authorized <strong>frameworks</strong> to dynamically reserve resources in the cluster.</p>
 
-<p>No breaking changes were introduced with dynamic reservation, which means the
-existing static reservation mechanism continues to be fully supported.</p>
-
-<p>In both types of reservations, resources are reserved for a <strong>role</strong>.</p>
+<p>In both types of reservations, resources are reserved for a <a href="/documentation/latest/roles/"><strong>role</strong></a>.</p>
 
 <h2>Static Reservation (since 0.14.0)</h2>
 
@@ -134,18 +131,28 @@ specified via the existing ACL mechanism
 <li><code>Offer::Operation::Reserve</code> and <code>Offer::Operation::Unreserve</code> messages are
 available for <strong>frameworks</strong> to send back via the <code>acceptOffers</code> API as a
 response to a resource offer.</li>
-<li><code>/reserve</code> and <code>/unreserve</code> HTTP endpoints are available for <strong>operators</strong>
-to manage dynamic reservations through the master. (<em>Coming Soon</em>).</li>
+<li><code>/reserve</code> and <code>/unreserve</code> HTTP endpoints allow <strong>operators</strong> to manage
+dynamic reservations through the master.</li>
 </ul>
 
 
 <p>In the following sections, we will walk through examples of each of the
 interfaces described above.</p>
 
-<h3><code>Offer::Operation::Reserve</code></h3>
+<p>Note that if two dynamic reservations are made for resources at a single slave,
+the reservations will be combined by adding together the resources reserved by
+each request. Similarly, &ldquo;partial&rdquo; unreserve operations are allowed: an
+unreserve operation can release only some of the resources at a slave that have
+been reserved for a given role. In this case, the unreserved resources will be
+subtracted from the previous reservation, and any remaining resources will still
+be reserved.</p>
+
+<h3>Framework Scheduler API</h3>
 
-<p>A framework is able to reserve resources through the resource offer cycle.
-Suppose we receive a resource offer with 12 CPUs and 6144 MB of RAM unreserved.</p>
+<h4><code>Offer::Operation::Reserve</code></h4>
+
+<p>A framework can reserve resources through the resource offer cycle.  Suppose we
+receive a resource offer with 12 CPUs and 6144 MB of RAM unreserved.</p>
 
 <pre><code>    {
       "id": &lt;offer_id&gt;,
@@ -201,7 +208,8 @@ the <code>role</code> and <code>principa
     }
 </code></pre>
 
-<p>The subsequent resource offer will <strong>contain</strong> the following reserved resources:</p>
+<p>If the reservation is successful, a subsequent resource offer will contain the
+following reserved resources:</p>
 
 <pre><code>    {
       "id": &lt;offer_id&gt;,
@@ -231,13 +239,14 @@ the <code>role</code> and <code>principa
     }
 </code></pre>
 
-<h3><code>Offer::Operation::Unreserve</code></h3>
+<h4><code>Offer::Operation::Unreserve</code></h4>
 
-<p>A framework is able to unreserve resources through the resource offer cycle.
+<p>A framework can unreserve resources through the resource offer cycle.
 In <a href="#offeroperationreserve">Offer::Operation::Reserve</a>, we reserved 8 CPUs
-and 4096 MB of RAM for our <code>role</code>. The master will continue to offer these
-resources to our <code>role</code>. Suppose we would like to unreserve these resources.
-First, we receive a resource offer (copy/pasted from above):</p>
+and 4096 MB of RAM on a particular slave for our <code>role</code>. The master will
+continue to only offer these resources to our <code>role</code>. Suppose we would like to
+unreserve these resources. First, we receive a resource offer (copy/pasted
+from above):</p>
 
 <pre><code>    {
       "id": &lt;offer_id&gt;,
@@ -267,9 +276,9 @@ First, we receive a resource offer (copy
     }
 </code></pre>
 
-<p>We unreserve the 8 CPUs and 4096 MB of RAM by sending the following
+<p>We can unreserve the 8 CPUs and 4096 MB of RAM by sending the following
 <code>Offer::Operation</code> message. <code>Offer::Operation::Unreserve</code> has a <code>resources</code> field
-which we specify with the resources to be unreserved.</p>
+which we can use to specify the resources to be unreserved.</p>
 
 <pre><code>    {
       "type": Offer::Operation::UNRESERVE,
@@ -300,34 +309,44 @@ which we specify with the resources to b
 
 <p>The unreserved resources may now be offered to other frameworks.</p>
 
-<h3><code>/reserve</code> (since 0.25.0)</h3>
+<h3>Operator HTTP Endpoints</h3>
 
-<p>Suppose we want to reserve 8 CPUs and 4096 MB of RAM for the <code>ads</code> role on
-a slave with id=<code>&lt;slave_id&gt;</code>. We send an HTTP POST request to the <code>/reserve</code>
-HTTP endpoint like so:</p>
+<p>As described above, dynamic reservations can be made by a framework scheduler,
+typically in response to a resource offer. However, dynamic reservations can
+also be created and deleted by sending HTTP requests to the <code>/reserve</code> and
+<code>/unreserve</code> endpoints, respectively. This capability is intended for use by
+operators and administrative tools.</p>
+
+<h4><code>/reserve</code> (since 0.25.0)</h4>
+
+<p>Suppose we want to reserve 8 CPUs and 4096 MB of RAM for the <code>ads</code> role on a
+slave with id=<code>&lt;slave_id&gt;</code> (note that it is up to the user to find the ID of the
+slave that hosts the desired resources; the request will fail if sufficient
+unreserved resources cannot be found on the slave). We send an HTTP POST request
+to the <code>/reserve</code> HTTP endpoint like so:</p>
 
 <pre><code>    $ curl -i \
       -u &lt;operator_principal&gt;:&lt;password&gt; \
       -d slaveId=&lt;slave_id&gt; \
-      -d resources='[ \
-        { \
-          "name": "cpus", \
-          "type": "SCALAR", \
-          "scalar": { "value": 8 }, \
-          "role": "ads", \
-          "reservation": { \
-            "principal": &lt;operator_principal&gt; \
-          } \
-        }, \
-        { \
-          "name": "mem", \
-          "type": "SCALAR", \
-          "scalar": { "value": 4096 }, \
-          "role": "ads", \
-          "reservation": { \
-            "principal": &lt;operator_principal&gt; \
-          } \
-        } \
+      -d resources='[
+        {
+          "name": "cpus",
+          "type": "SCALAR",
+          "scalar": { "value": 8 },
+          "role": "ads",
+          "reservation": {
+            "principal": &lt;operator_principal&gt;
+          }
+        },
+        {
+          "name": "mem",
+          "type": "SCALAR",
+          "scalar": { "value": 4096 },
+          "role": "ads",
+          "reservation": {
+            "principal": &lt;operator_principal&gt;
+          }
+        }
       ]' \
       -X POST http://&lt;ip&gt;:&lt;port&gt;/master/reserve
 </code></pre>
@@ -335,14 +354,14 @@ HTTP endpoint like so:</p>
 <p>The user receives one of the following HTTP responses:</p>
 
 <ul>
-<li><code>200 OK</code>: Success</li>
-<li><code>400 BadRequest</code>: Invalid arguments (e.g. missing parameters).</li>
+<li><code>200 OK</code>: Success (the requested resources have been reserved).</li>
+<li><code>400 BadRequest</code>: Invalid arguments (e.g., missing parameters).</li>
 <li><code>401 Unauthorized</code>: Unauthorized request.</li>
 <li><code>409 Conflict</code>: Insufficient resources to satisfy the reserve operation.</li>
 </ul>
 
 
-<h3><code>/unreserve</code> (since 0.25.0)</h3>
+<h4><code>/unreserve</code> (since 0.25.0)</h4>
 
 <p>Suppose we want to unreserve the resources that we dynamically reserved above.
 We can send an HTTP POST request to the <code>/unreserve</code> HTTP endpoint like so:</p>
@@ -350,25 +369,25 @@ We can send an HTTP POST request to the
 <pre><code>    $ curl -i \
       -u &lt;operator_principal&gt;:&lt;password&gt; \
       -d slaveId=&lt;slave_id&gt; \
-      -d resources='[ \
-        { \
-          "name": "cpus", \
-          "type": "SCALAR", \
-          "scalar": { "value": 8 }, \
-          "role": "ads", \
-          "reservation": { \
-            "principal": &lt;operator_principal&gt; \
-          } \
-        }, \
-        { \
-          "name": "mem", \
-          "type": "SCALAR", \
-          "scalar": { "value": 4096 }, \
-          "role": "ads", \
-          "reservation": { \
-            "principal": &lt;operator_principal&gt; \
-          } \
-        } \
+      -d resources='[
+        {
+          "name": "cpus",
+          "type": "SCALAR",
+          "scalar": { "value": 8 },
+          "role": "ads",
+          "reservation": {
+            "principal": &lt;operator_principal&gt;
+          }
+        },
+        {
+          "name": "mem",
+          "type": "SCALAR",
+          "scalar": { "value": 4096 },
+          "role": "ads",
+          "reservation": {
+            "principal": &lt;operator_principal&gt;
+          }
+        }
       ]' \
       -X POST http://&lt;ip&gt;:&lt;port&gt;/master/unreserve
 </code></pre>
@@ -376,10 +395,10 @@ We can send an HTTP POST request to the
 <p>The user receives one of the following HTTP responses:</p>
 
 <ul>
-<li><code>200 OK</code>: Success</li>
-<li><code>400 BadRequest</code>: Invalid arguments (e.g. missing parameters).</li>
+<li><code>200 OK</code>: Success (the requested resources have been unreserved).</li>
+<li><code>400 BadRequest</code>: Invalid arguments (e.g., missing parameters).</li>
 <li><code>401 Unauthorized</code>: Unauthorized request.</li>
-<li><code>409 Conflict</code>: Insufficient resources to satisfy unreserve operation.</li>
+<li><code>409 Conflict</code>: Insufficient resources to satisfy the unreserve operation.</li>
 </ul>
 
 

Modified: mesos/site/publish/documentation/scheduler-http-api/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/scheduler-http-api/index.html?rev=1720526&r1=1720525&r2=1720526&view=diff
==============================================================================
--- mesos/site/publish/documentation/scheduler-http-api/index.html (original)
+++ mesos/site/publish/documentation/scheduler-http-api/index.html Thu Dec 17 11:58:04 2015
@@ -100,7 +100,46 @@
 
 <p>The following calls are currently accepted by the master. The canonical source of this information is <a href="https://github.com/apache/mesos/blob/master/include/mesos/v1/scheduler/scheduler.proto">scheduler.proto</a> (NOTE: The protobuf definitions are subject to change before the beta API is finalized). Note that when sending JSON encoded Calls, schedulers should encode raw bytes in Base64 and strings in UTF-8.</p>
 
-<h3>SUBSCRIBE</h3>
+<h3>RecordIO response format</h3>
+
+<p>The response returned from the <code>SUBSCRIBE</code> call (see <a href="#subscribe">below</a> is encoded in RecordIO format, which essentially prepends to a single record (either JSON or serialized Protobuf) its length in bytes, followed by a newline and then the data:</p>
+
+<p>The <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.1">BNF grammar</a> for a RecordIO-encoded streaming response is:</p>
+
+<pre><code>    records         = *record
+
+    record          = record-size LF record-data
+
+    record-size     = 1*DIGIT
+    record-data     = record-size(OCTET)
+</code></pre>
+
+<p><code>record-size</code> should be interpreted as an unsigned 64-bit integer (<code>uint64</code>).</p>
+
+<p>For example, a stream may look like:</p>
+
+<pre><code>128\n
+{“type”: “SUBSCRIBED”,“subscribed”: {“framework_id”: {“value”:“12220-3440-12532-2345”},...}104\n
+{“framework_id”: {“value”: “12220-3440-12532-2345”},...{“value” : “12220-3440-12532-O12”},}208\n
+...
+</code></pre>
+
+<p>In pseudo-code, this could be parsed with something like the following:</p>
+
+<pre><code>  while (true) {
+    do {
+      lengthBytes = readline()
+    } while (lengthBytes.length &lt; 1)
+
+    messageLength = parseInt(lengthBytes);
+    messageBytes = read(messageLength);
+    process(messageBytes);
+  }
+</code></pre>
+
+<p>Network intermediaries e.g. proxies are free to change the chunk boundaries and this should not have any effect on the recipient application (scheduler layer). We wanted a way to delimit/encode two events for JSON/Protobuf responses consistently and RecordIO format allowed us to do that.</p>
+
+<h3><a id="subscribe"></a>SUBSCRIBE</h3>
 
 <p>This is the first step in the communication process between the scheduler and the master. This is also to be considered as subscription to the “/scheduler” events stream.</p>
 
@@ -537,7 +576,7 @@ HTTP/1.1 202 Accepted
 
 <h2>Master detection</h2>
 
-<p>Mesos has a high-availability mode that uses multiple Mesos masters; one active master (/documentation/latest/called the leader or leading master) and several standbys in case it fails. The masters elect the leader, with ZooKeeper coordinating the election. For more details please refer to the <a href="/documentation/latest/high-availability/">documentation</a>.</p>
+<p>Mesos has a high-availability mode that uses multiple Mesos masters; one active master (called the leader or leading master) and several standbys in case it fails. The masters elect the leader, with ZooKeeper coordinating the election. For more details please refer to the <a href="/documentation/latest//documentation/latest/high-availability/">documentation</a>.</p>
 
 <p>Schedulers are expected to make HTTP requests to the leading master. If requests are made to a non-leading master a “HTTP 307 Temporary Redirect” will be received with the “Location” header pointing to the leading master.</p>
 

Modified: mesos/site/publish/documentation/ssl/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/ssl/index.html?rev=1720526&r1=1720525&r2=1720526&view=diff
==============================================================================
--- mesos/site/publish/documentation/ssl/index.html (original)
+++ mesos/site/publish/documentation/ssl/index.html Thu Dec 17 11:58:04 2015
@@ -91,7 +91,7 @@
 
 <p>There is currently only one implementation of the <a href="https://github.com/apache/mesos/blob/master/3rdparty/libprocess/include/process/socket.hpp">libprocess socket interface</a> that supports SSL. This implementation uses <a href="https://github.com/libevent/libevent">libevent</a>. Specifically it relies on the <code>libevent-openssl</code> library that wraps <code>openssl</code>.</p>
 
-<p>After building Mesos 0.23.0 from source, assuming you have installed the required <a href="#Dependencies">Dependencies</a>, you can modify your configure line to enable SSL as follows:</p>
+<p>Before building Mesos 0.23.0 from source, assuming you have installed the required <a href="#Dependencies">Dependencies</a>, you can modify your configure line to enable SSL as follows:</p>
 
 <pre><code>../configure --enable-libevent --enable-ssl
 </code></pre>

Modified: mesos/site/publish/documentation/submitting-a-patch/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/submitting-a-patch/index.html?rev=1720526&r1=1720525&r2=1720526&view=diff
==============================================================================
--- mesos/site/publish/documentation/submitting-a-patch/index.html (original)
+++ mesos/site/publish/documentation/submitting-a-patch/index.html Thu Dec 17 11:58:04 2015
@@ -115,7 +115,7 @@
 
 <ol>
 <li>To find a shepherd, email the dev mailing list (include a link to your JIRA issue). You can also try asking by adding a comment to your JIRA issue.</li>
-<li>You can also find a shepherd by asking the developers on IRC (/documentation/latest/in the <a href="irc://irc.freenode.net/mesos">mesos channel</a> on <a href="https://freenode.net">Freenode</a>). You can find the current list of committers <a href="committers/">here</a>: a developer that has previously worked on the component you are modifying might be a good candidate shepherd.</li>
+<li>You can also find a shepherd by asking the developers on IRC (in the <a href="irc://irc.freenode.net/mesos">mesos channel</a> on <a href="https://freenode.net">Freenode</a>). You can find the current list of committers <a href="/documentation/latest/committers/">here</a>: a developer that has previously worked on the component you are modifying might be a good candidate shepherd.</li>
 </ol>
 </li>
 </ol>
@@ -154,6 +154,13 @@
 <li>To execute a single unit test (helpful when trying to debug a test case failure), use something like: <code>make check GTEST_FILTER="HTTPTest.Delete"</code>.</li>
 </ol>
 </li>
+<li><p>Divide your change into one or more Git commits. Each commit should represent a single logical (atomic) change to the Mesos source code: this makes your changes easier to review. For more information, see the <a href="/documentation/latest/effective-code-reviewing/">reviewer guidelines</a>.</p>
+
+<ol>
+<li>Try to avoid including other, unrelated cleanups (e.g., typo fixes or style nits) in the same commit that makes functional changes. While typo fixes are great, including them in the same commit as functional changes makes the commit history harder to read.</li>
+<li>Developers often make incremental commits to save their progress when working on a change, and then &ldquo;rewrite history&rdquo; (e.g., using <code>git rebase -i</code>) to create a clean set of commits once the change is ready to be reviewed.</li>
+</ol>
+</li>
 <li><p>Make sure to pull in any changes that have been committed to master branch. Using Git, do this via something like:</p>
 
 <ol>

Modified: mesos/site/publish/documentation/upgrades/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/upgrades/index.html?rev=1720526&r1=1720525&r2=1720526&view=diff
==============================================================================
--- mesos/site/publish/documentation/upgrades/index.html (original)
+++ mesos/site/publish/documentation/upgrades/index.html Thu Dec 17 11:58:04 2015
@@ -83,7 +83,7 @@
 	<div class="col-md-8">
 		<h1>Upgrading Mesos</h1>
 
-<p>This document serves as a guide for users who wish to upgrade an existing mesos cluster. Some versions require particular upgrade techniques when upgrading a running cluster. Some upgrades will have incompatible changes.</p>
+<p>This document serves as a guide for users who wish to upgrade an existing Mesos cluster. Some versions require particular upgrade techniques when upgrading a running cluster. Some upgrades will have incompatible changes.</p>
 
 <h2>Upgrading from 0.25.x to 0.26.x</h2>
 
@@ -95,6 +95,14 @@
 </ul>
 
 
+<p><strong>NOTE</strong> The <code>Credential</code> protobuf has been changed. <code>Credential</code> field <code>secret</code> is now a string, it used to be bytes. This will affect framework developers and language bindings ought to update their generated protobuf with the new version. This fixes JSON based credentials file support.</p>
+
+<p><strong>NOTE</strong> The <code>/state</code> endpoints on master and slave will no longer include <code>data</code> fields as part of the JSON models for <code>ExecutorInfo</code> and <code>TaskInfo</code> out of consideration for memory scalability (see <a href="https://issues.apache.org/jira/browse/MESOS-3794">MESOS-3794</a> and <a href="http://www.mail-archive.com/dev@mesos.apache.org/msg33536.html">this email thread</a>).
+On master, the affected <code>data</code> field was originally found via <code>frameworks[*].executors[*].data</code>.
+On slaves, the affected <code>data</code> field was originally found via <code>executors[*].tasks[*].data</code>.</p>
+
+<p><strong>NOTE</strong> The <code>NetworkInfo</code> protobuf has been changed. The fields <code>protocol</code> and <code>ip_address</code> are now deprecated. The new field <code>ip_addresses</code> subsumes the information provided by them.</p>
+
 <h2>Upgrading from 0.24.x to 0.25.x</h2>
 
 <p><strong>NOTE</strong> The following endpoints will be deprecated in favor of new endpoints. Both versions will be available in 0.25 but the deprecated endpoints will be removed in a subsequent release.</p>

Modified: mesos/site/publish/downloads/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/downloads/index.html?rev=1720526&r1=1720525&r2=1720526&view=diff
==============================================================================
--- mesos/site/publish/downloads/index.html (original)
+++ mesos/site/publish/downloads/index.html Thu Dec 17 11:58:04 2015
@@ -73,6 +73,8 @@
     <h4>Previous Releases</h4>
 
     <ul>
+      <li><a href="http://archive.apache.org/dist/mesos/0.25.0/">0.25.0</a>
+           (<a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311242&version=12329852">Release Notes</a>)</li>
       <li><a href="http://archive.apache.org/dist/mesos/0.24.1/">0.24.1</a>
            (<a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311242&version=12333552">Release Notes</a>)</li>
       <li><a href="http://archive.apache.org/dist/mesos/0.24.0/">0.24.0</a>
@@ -135,8 +137,8 @@
   <div class="col-md-8">
     <h1>Download Mesos</h1>
       <p>Download the most recent stable release:
-          <a href="http://www.apache.org/dyn/mirrors/mirrors.cgi/mesos/0.25.0/">0.25.0</a>
-        (<a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311242&version=12329852">Release Notes</a>)
+          <a href="http://www.apache.org/dyn/mirrors/mirrors.cgi/mesos/0.26.0/">0.26.0</a>
+        (<a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311242&version=12333528">Release Notes</a>)
       </p>
 
       <h4>Getting the code via source control</h4>

Modified: mesos/site/publish/gettingstarted/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/gettingstarted/index.html?rev=1720526&r1=1720525&r2=1720526&view=diff
==============================================================================
--- mesos/site/publish/gettingstarted/index.html (original)
+++ mesos/site/publish/gettingstarted/index.html Thu Dec 17 11:58:04 2015
@@ -87,176 +87,215 @@
 
 <p>There are different ways you can get Mesos:</p>
 
-<ol>
-<li><p>Download the latest stable release from <a href="http://mesos.apache.org/downloads/">Apache</a> (<strong><em>Recommended</em></strong>)</p>
+<p>1. Download the latest stable release from <a href="http://mesos.apache.org/downloads/">Apache</a> (<strong><em>Recommended</em></strong>)</p>
 
-<pre><code> $ wget http://www.apache.org/dist/mesos/0.25.0/mesos-0.25.0.tar.gz
- $ tar -zxf mesos-0.25.0.tar.gz
-</code></pre></li>
-<li><p>Clone the Mesos git <a href="https://git-wip-us.apache.org/repos/asf/mesos.git">repository</a> (<strong><em>Advanced Users Only</em></strong>)</p>
-
-<pre><code> $ git clone https://git-wip-us.apache.org/repos/asf/mesos.git
-</code></pre></li>
-</ol>
+<pre><code>$ wget http://www.apache.org/dist/mesos/0.26.0/mesos-0.26.0.tar.gz
+$ tar -zxf mesos-0.26.0.tar.gz
+</code></pre>
+
+<p>2. Clone the Mesos git <a href="https://git-wip-us.apache.org/repos/asf/mesos.git">repository</a> (<strong><em>Advanced Users Only</em></strong>)</p>
 
+<pre><code>$ git clone https://git-wip-us.apache.org/repos/asf/mesos.git
+</code></pre>
+
+<p><em>NOTE: If you have problems running the above commands, you may need to first run through the </em><strong>System Requirements</strong><em> section below to install the <code>wget</code>, <code>tar</code>, and <code>git</code> utilities for your system.</em></p>
 
 <h2>System Requirements</h2>
 
 <p>Mesos runs on Linux (64 Bit) and Mac OS X (64 Bit).</p>
 
+<p>For full support of process isolation under Linux a recent kernel >=3.10 is required.</p>
+
+<p>Make sure your hostname is resolvable via DNS or via <code>/etc/hosts</code> to allow full support of Docker&rsquo;s host-networking capabilities, needed for some of the Mesos tests. When in doubt, please validate that <code>/etc/hosts</code> contains your hostname.</p>
+
 <h3>Ubuntu 14.04</h3>
 
 <p>Following are the instructions for stock Ubuntu 14.04. If you are using a different OS, please install the packages accordingly.</p>
 
-<pre><code>    # Update the packages.
-    $ sudo apt-get update
+<pre><code># Update the packages.
+$ sudo apt-get update
+
+# Install a few utility tools.
+$ sudo apt-get install -y tar wget git
 
-    # Install the latest OpenJDK.
-    $ sudo apt-get install -y openjdk-7-jdk
+# Install the latest OpenJDK.
+$ sudo apt-get install -y openjdk-7-jdk
 
-    # Install autotools (Only necessary if building from git repository).
-    $ sudo apt-get install -y autoconf libtool
+# Install autotools (Only necessary if building from git repository).
+$ sudo apt-get install -y autoconf libtool
 
-    # Install other Mesos dependencies.
-    $ sudo apt-get -y install build-essential python-dev python-boto libcurl4-nss-dev libsasl2-dev maven libapr1-dev libsvn-dev
+# Install other Mesos dependencies.
+$ sudo apt-get -y install build-essential python-dev python-boto libcurl4-nss-dev libsasl2-dev libsasl2-modules maven libapr1-dev libsvn-dev
 </code></pre>
 
-<h3>Mac OS X Yosemite</h3>
+<h3>Mac OS X Yosemite &amp; El Capitan</h3>
 
-<p>Following are the instructions for stock Mac OS X Yosemite. If you are using a different OS, please install the packages accordingly.</p>
+<p>Following are the instructions for stock Mac OS X Yosemite and El Capitan. If you are using a different OS, please install the packages accordingly.</p>
 
-<pre><code>    # Install Command Line Tools.
-    $ xcode-select --install
+<pre><code># Install Command Line Tools.
+$ xcode-select --install
 
-    # Install Homebrew.
-    $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
+# Install Homebrew.
+$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
 
-    # Install libraries.
-    $ brew install autoconf automake libtool subversion maven
+# Install libraries.
+$ brew install wget git autoconf automake libtool subversion maven
 </code></pre>
 
+<p><em>NOTE: When upgrading from Yosemite to El Capitan, make sure to rerun <code>xcode-select --install</code> after the upgrade.</em></p>
+
 <h3>CentOS 6.6</h3>
 
 <p>Following are the instructions for stock CentOS 6.6. If you are using a different OS, please install the packages accordingly.</p>
 
-<pre><code>    # Install a few utility tools
-    $ sudo yum install -y tar wget which
-
-    # 'Mesos &gt; 0.21.0' requires a C++ compiler with full C++11 support,
-    # (e.g. GCC &gt; 4.8) which is available via 'devtoolset-2'.
-    # Fetch the Scientific Linux CERN devtoolset repo file.
-    $ sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
-
-    # Import the CERN GPG key.
-    $ sudo rpm --import http://linuxsoft.cern.ch/cern/centos/7/os/x86_64/RPM-GPG-KEY-cern
-
-    # Fetch the Apache Maven repo file.
-    $ sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
-
-    # 'Mesos &gt; 0.21.0' requires 'subversion &gt; 1.8' devel package, which is
-    # not available in the default repositories.
-    # Add the WANdisco SVN repo file: '/etc/yum.repos.d/wandisco-svn.repo' with content:
-
-      [WANdiscoSVN]
-      name=WANdisco SVN Repo 1.8
-      enabled=1
-      baseurl=http://opensource.wandisco.com/centos/6/svn-1.8/RPMS/$basearch/
-      gpgcheck=1
-      gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
-
-    # Install essential development tools.
-    $ sudo yum groupinstall -y "Development Tools"
-
-    # Install 'devtoolset-2-toolchain' which includes GCC 4.8.2 and related packages.
-    $ sudo yum install -y devtoolset-2-toolchain
-
-    # Install other Mesos dependencies.
-    $ sudo yum install -y apache-maven python-devel java-1.7.0-openjdk-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-util-devel
-
-    # Enter a shell with 'devtoolset-2' enabled.
-    $ scl enable devtoolset-2 bash
-    $ g++ --version  # Make sure you've got GCC &gt; 4.8!
+<pre><code># Install a recent kernel for full support of process isolation.
+$ sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
+$ sudo rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
+$ sudo yum --enablerepo=elrepo-kernel install -y kernel-lt
+
+# Make the just installed kernel the one booted by default, and reboot.
+$ sudo sed -i 's/default=1/default=0/g' /boot/grub/grub.conf
+$ sudo reboot
+
+# Install a few utility tools. This also forces an update of `nss`,
+# which is necessary for the Java bindings to build properly.
+$ sudo yum install -y tar wget git which nss
+
+# 'Mesos &gt; 0.21.0' requires a C++ compiler with full C++11 support,
+# (e.g. GCC &gt; 4.8) which is available via 'devtoolset-2'.
+# Fetch the Scientific Linux CERN devtoolset repo file.
+$ sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
+
+# Import the CERN GPG key.
+$ sudo rpm --import http://linuxsoft.cern.ch/cern/centos/7/os/x86_64/RPM-GPG-KEY-cern
+
+# Fetch the Apache Maven repo file.
+$ sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
+
+# 'Mesos &gt; 0.21.0' requires 'subversion &gt; 1.8' devel package, which is
+# not available in the default repositories.
+# Create a WANdisco SVN repo file to install the correct version:
+$ sudo cat &gt; /etc/yum.repos.d/wandisco-svn.repo &lt;&lt;EOF
+[WANdiscoSVN]
+name=WANdisco SVN Repo 1.8
+enabled=1
+baseurl=http://opensource.wandisco.com/centos/6/svn-1.8/RPMS/$basearch/
+gpgcheck=1
+gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
+EOF
+
+# Install essential development tools.
+$ sudo yum groupinstall -y "Development Tools"
+
+# Install 'devtoolset-2-toolchain' which includes GCC 4.8.2 and related packages.
+$ sudo yum install -y devtoolset-2-toolchain
+
+# Install other Mesos dependencies.
+$ sudo yum install -y apache-maven python-devel java-1.7.0-openjdk-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-util-devel
+
+# Enter a shell with 'devtoolset-2' enabled.
+$ scl enable devtoolset-2 bash
+$ g++ --version  # Make sure you've got GCC &gt; 4.8!
 </code></pre>
 
 <h3>CentOS 7.1</h3>
 
 <p>Following are the instructions for stock CentOS 7.1. If you are using a different OS, please install the packages accordingly.</p>
 
-<pre><code>    # Install a few utility tools
-    $ sudo yum install -y tar wget
+<pre><code># Install a few utility tools
+$ sudo yum install -y tar wget git
 
-    # Fetch the Apache Maven repo file.
-    $ sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
+# Fetch the Apache Maven repo file.
+$ sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
 
-    # 'Mesos &gt; 0.21.0' requires 'subversion &gt; 1.8' devel package, which is
-    # not available in the default repositories.
-    # Add the WANdisco SVN repo file: '/etc/yum.repos.d/wandisco-svn.repo' with content:
-
-      [WANdiscoSVN]
-      name=WANdisco SVN Repo 1.9
-      enabled=1
-      baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS/$basearch/
-      gpgcheck=1
-      gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
+# Install the EPEL repo so that we can pull in 'libserf-1' as part of our
+# subversion install below.
+$ sudo yum install -y epel-release
+
+# 'Mesos &gt; 0.21.0' requires 'subversion &gt; 1.8' devel package,
+# which is not available in the default repositories.
+# Create a WANdisco SVN repo file to install the correct version:
+$ sudo cat &gt; /etc/yum.repos.d/wandisco-svn.repo &lt;&lt;EOF
+[WANdiscoSVN]
+name=WANdisco SVN Repo 1.9
+enabled=1
+baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS/$basearch/
+gpgcheck=1
+gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
+EOF
+
+# Parts of Mesos require systemd in order to operate. However, Mesos
+# only supports versions of systemd that contain the 'Delegate' flag.
+# This flag was first introduced in 'systemd version 218', which is
+# lower than the default version installed by centos. Luckily, centos
+# 7.1 has a patched 'systemd &lt; 218' that contains the 'Delegate' flag.
+# Explicity update systemd to this patched version.
+$ sudo yum update systemd
 
-    # Install essential development tools.
-    $ sudo yum groupinstall -y "Development Tools"
+# Install essential development tools.
+$ sudo yum groupinstall -y "Development Tools"
 
-    # Install other Mesos dependencies.
-    $ sudo yum install -y apache-maven python-devel java-1.7.0-openjdk-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-util-devel
+# Install other Mesos dependencies.
+$ sudo yum install -y apache-maven python-devel java-1.8.0-openjdk-devel zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 apr-devel subversion-devel apr-util-devel
 </code></pre>
 
 <h2>Building Mesos</h2>
 
-<pre><code>    # Change working directory.
-    $ cd mesos
+<pre><code># Change working directory.
+$ cd mesos
 
-    # Bootstrap (Only required if building from git repository).
-    $ ./bootstrap
+# Bootstrap (Only required if building from git repository).
+$ ./bootstrap
 
-    # Configure and build.
-    $ mkdir build
-    $ cd build
-    $ ../configure
-    $ make
+# Configure and build.
+$ mkdir build
+$ cd build
+$ ../configure
+$ make
 </code></pre>
 
 <p>In order to speed up the build and reduce verbosity of the logs, you can append <code>-j &lt;number of cores&gt; V=0</code> to <code>make</code>.</p>
 
-<pre><code>    # Run test suite.
-    $ make check
+<pre><code># Run test suite.
+$ make check
 
-    # Install (Optional).
-    $ make install
+# Install (Optional).
+$ make install
 </code></pre>
 
 <h2>Examples</h2>
 
-<p>Mesos comes bundled with example frameworks written in C++, Java and Python.</p>
+<p>Mesos comes bundled with example frameworks written in C++, Java and Python.
+The framework binaries will only be available after running <code>make check</code>, as
+described in the <strong><em>Building Mesos</em></strong> section above.</p>
 
-<pre><code>    # Change into build directory.
-    $ cd build
+<pre><code># Change into build directory.
+$ cd build
 
-    # Start mesos master (Ensure work directory exists and has proper permissions).
-    $ ./bin/mesos-master.sh --ip=127.0.0.1 --work_dir=/var/lib/mesos
+# Start mesos master (Ensure work directory exists and has proper permissions).
+$ ./bin/mesos-master.sh --ip=127.0.0.1 --work_dir=/var/lib/mesos
 
-    # Start mesos slave.
-    $ ./bin/mesos-slave.sh --master=127.0.0.1:5050
+# Start mesos slave.
+$ ./bin/mesos-slave.sh --master=127.0.0.1:5050
 
-    # Visit the mesos web page.
-    $ http://127.0.0.1:5050
+# Visit the mesos web page.
+$ http://127.0.0.1:5050
 
-    # Run C++ framework (Exits after successfully running some tasks.).
-    $ ./src/test-framework --master=127.0.0.1:5050
+# Run C++ framework (Exits after successfully running some tasks.).
+$ ./src/test-framework --master=127.0.0.1:5050
 
-    # Run Java framework (Exits after successfully running some tasks.).
-    $ ./src/examples/java/test-framework 127.0.0.1:5050
+# Run Java framework (Exits after successfully running some tasks.).
+$ ./src/examples/java/test-framework 127.0.0.1:5050
 
-    # Run Python framework (Exits after successfully running some tasks.).
-    $ ./src/examples/python/test-framework 127.0.0.1:5050
+# Run Python framework (Exits after successfully running some tasks.).
+$ ./src/examples/python/test-framework 127.0.0.1:5050
 </code></pre>
 
-<p><em>NOTE: To build the example frameworks, make sure you build the test suite by doing <code>make check</code>.</em></p>
+<p><em>Note: These examples assume you are running Mesos on your local machine.
+Following them will not allow you to access the Mesos web page in a production
+environment (e.g. on AWS). For that you will need to specify the actual IP of
+your host when launching the Mesos master and ensure your firewall settings
+allow access to port 5050 from the outside world.</em></p>
 
 	</div>
 </div>

Modified: mesos/site/publish/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/index.html?rev=1720526&r1=1720525&r2=1720526&view=diff
==============================================================================
--- mesos/site/publish/index.html (original)
+++ mesos/site/publish/index.html Thu Dec 17 11:58:04 2015
@@ -68,21 +68,10 @@
 
 			<div class="container-fluid homepage jumbotron">
     <div class="row">
-      <div class="col-md-7">
-        <h1>Program against your datacenter like it’s a single pool of resources</h1>
-        <p class="lead">Apache Mesos abstracts CPU, memory, storage, and other compute resources away from machines (physical or virtual), enabling fault-tolerant and elastic distributed systems to easily be built and run effectively.</p>
-
-            <p> <a href="downloads/"><span class="glyphicon glyphicon-download"></span> Download Mesos 0.25.0</a> or learn how to <a href="gettingstarted/">get started</a></p>
-      </div>
-    <div class="col-md-5 text-center download">
-            <div class="homepage-featured">
-                <h2>MesosCon Europe</h2>
-                <p>Dublin, October 8 - 9th, 2015</p>
-                #MesosCon Europe is conference organized by the Apache Mesos community, bringing together users and developers to share and learn about the project and its growing ecosystem.
-                <br /><br />
-                <a class="btn btn-default btn-success" href="http://events.linuxfoundation.org/events/mesoscon-europe/attend/register" role="button">REGISTER TODAY</a>
-            </div>
-    </div>
+    <h1>Program against your datacenter like it’s a single pool of resources</h1>
+    <p class="lead">Apache Mesos abstracts CPU, memory, storage, and other compute resources away from machines (physical or virtual), enabling fault-tolerant and elastic distributed systems to easily be built and run effectively.</p>
+
+        <p> <a href="downloads/"><span class="glyphicon glyphicon-download"></span> Download Mesos 0.26.0</a> or learn how to <a href="gettingstarted/">get started</a></p>
     </div>
 </div>
 
@@ -112,6 +101,7 @@
   <div class="col-md-5">
     <h3>News</h3>
       <ul>
+      <li><em>December 16, 2015</em> - Mesos 0.26.0 is released! See the <a href="https://git-wip-us.apache.org/repos/asf?p=mesos.git;a=blob_plain;f=CHANGELOG;hb=0.26.0">CHANGELOG</a> and <a href="/blog/mesos-0-26-0-released/">blog post</a> for details.</li>
       <li><em>October 10, 2015</em> - Mesos 0.25.0 is released! See the <a href="https://git-wip-us.apache.org/repos/asf?p=mesos.git;a=blob_plain;f=CHANGELOG;hb=0.25.0">CHANGELOG</a> and <a href="/blog/mesos-0-25-0-released/">blog post</a> for details.</li>
             <li><em>September 30, 2015</em> - Announcing the #MesosCon Europe Hackathon! See the <a href="/blog/announcing-mesoscon-eu-2015-hackathon/">blog post</a> for details.</li>
       <li><em>September 24, 2015</em> - Mesos 0.24.1 is released! See the <a href="https://git-wip-us.apache.org/repos/asf?p=mesos.git;a=blob_plain;f=CHANGELOG;hb=0.24.1">CHANGELOG</a> and <a href="/blog/mesos-0-24-1-and-more-released/">blog post</a> for details.</li>