http://git-wip-us.apache.org/repos/asf/incubator-samza/blob/1e2cfe22/docs/learn/documentation/versioned/api/javadocs/overview-frame.html
----------------------------------------------------------------------
diff --git 
a/docs/learn/documentation/versioned/api/javadocs/overview-frame.html 
b/docs/learn/documentation/versioned/api/javadocs/overview-frame.html
new file mode 100644
index 0000000..e89dcb3
--- /dev/null
+++ b/docs/learn/documentation/versioned/api/javadocs/overview-frame.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (version 1.7.0_65) on Tue Aug 05 21:46:34 PDT 2014 
-->
+<title>Overview List (samza-api 0.8.0-SNAPSHOT API)</title>
+<meta name="date" content="2014-08-05">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+</head>
+<body>
+<div class="indexHeader"><a href="allclasses-frame.html" 
target="packageFrame">All Classes</a></div>
+<div class="indexContainer">
+<h2 title="Packages">Packages</h2>
+<ul title="Packages">
+<li><a href="org/apache/samza/package-frame.html" 
target="packageFrame">org.apache.samza</a></li>
+<li><a href="org/apache/samza/checkpoint/package-frame.html" 
target="packageFrame">org.apache.samza.checkpoint</a></li>
+<li><a href="org/apache/samza/config/package-frame.html" 
target="packageFrame">org.apache.samza.config</a></li>
+<li><a href="org/apache/samza/container/package-frame.html" 
target="packageFrame">org.apache.samza.container</a></li>
+<li><a href="org/apache/samza/container/grouper/stream/package-frame.html" 
target="packageFrame">org.apache.samza.container.grouper.stream</a></li>
+<li><a href="org/apache/samza/job/package-frame.html" 
target="packageFrame">org.apache.samza.job</a></li>
+<li><a href="org/apache/samza/metrics/package-frame.html" 
target="packageFrame">org.apache.samza.metrics</a></li>
+<li><a href="org/apache/samza/serializers/package-frame.html" 
target="packageFrame">org.apache.samza.serializers</a></li>
+<li><a href="org/apache/samza/storage/package-frame.html" 
target="packageFrame">org.apache.samza.storage</a></li>
+<li><a href="org/apache/samza/system/package-frame.html" 
target="packageFrame">org.apache.samza.system</a></li>
+<li><a href="org/apache/samza/system/chooser/package-frame.html" 
target="packageFrame">org.apache.samza.system.chooser</a></li>
+<li><a href="org/apache/samza/task/package-frame.html" 
target="packageFrame">org.apache.samza.task</a></li>
+<li><a href="org/apache/samza/util/package-frame.html" 
target="packageFrame">org.apache.samza.util</a></li>
+</ul>
+</div>
+<p>&nbsp;</p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-samza/blob/1e2cfe22/docs/learn/documentation/versioned/api/javadocs/overview-summary.html
----------------------------------------------------------------------
diff --git 
a/docs/learn/documentation/versioned/api/javadocs/overview-summary.html 
b/docs/learn/documentation/versioned/api/javadocs/overview-summary.html
new file mode 100644
index 0000000..ffc8d6d
--- /dev/null
+++ b/docs/learn/documentation/versioned/api/javadocs/overview-summary.html
@@ -0,0 +1,175 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (version 1.7.0_65) on Tue Aug 05 21:46:34 PDT 2014 
-->
+<title>Overview (samza-api 0.8.0-SNAPSHOT API)</title>
+<meta name="date" content="2014-08-05">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+</head>
+<body>
+<script type="text/javascript"><!--
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Overview (samza-api 0.8.0-SNAPSHOT API)";
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar_top">
+<!--   -->
+</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a 
name="navbar_top_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li class="navBarCell1Rev">Overview</li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?overview-summary.html" target="_top">Frames</a></li>
+<li><a href="overview-summary.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip-navbar_top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">samza-api 0.8.0-SNAPSHOT API</h1>
+</div>
+<div class="contentContainer">
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" 
summary="Packages table, listing packages, and an explanation">
+<caption><span>Packages</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a 
href="org/apache/samza/package-summary.html">org.apache.samza</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a 
href="org/apache/samza/checkpoint/package-summary.html">org.apache.samza.checkpoint</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a 
href="org/apache/samza/config/package-summary.html">org.apache.samza.config</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a 
href="org/apache/samza/container/package-summary.html">org.apache.samza.container</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a 
href="org/apache/samza/container/grouper/stream/package-summary.html">org.apache.samza.container.grouper.stream</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a 
href="org/apache/samza/job/package-summary.html">org.apache.samza.job</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a 
href="org/apache/samza/metrics/package-summary.html">org.apache.samza.metrics</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a 
href="org/apache/samza/serializers/package-summary.html">org.apache.samza.serializers</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a 
href="org/apache/samza/storage/package-summary.html">org.apache.samza.storage</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a 
href="org/apache/samza/system/package-summary.html">org.apache.samza.system</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a 
href="org/apache/samza/system/chooser/package-summary.html">org.apache.samza.system.chooser</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a 
href="org/apache/samza/task/package-summary.html">org.apache.samza.task</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a 
href="org/apache/samza/util/package-summary.html">org.apache.samza.util</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar_bottom">
+<!--   -->
+</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a 
name="navbar_bottom_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li class="navBarCell1Rev">Overview</li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?overview-summary.html" target="_top">Frames</a></li>
+<li><a href="overview-summary.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip-navbar_bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-samza/blob/1e2cfe22/docs/learn/documentation/versioned/api/javadocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/docs/learn/documentation/versioned/api/javadocs/overview-tree.html 
b/docs/learn/documentation/versioned/api/javadocs/overview-tree.html
new file mode 100644
index 0000000..867af28
--- /dev/null
+++ b/docs/learn/documentation/versioned/api/javadocs/overview-tree.html
@@ -0,0 +1,253 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (version 1.7.0_65) on Tue Aug 05 21:46:34 PDT 2014 
-->
+<title>Class Hierarchy (samza-api 0.8.0-SNAPSHOT API)</title>
+<meta name="date" content="2014-08-05">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+</head>
+<body>
+<script type="text/javascript"><!--
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Class Hierarchy (samza-api 0.8.0-SNAPSHOT API)";
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar_top">
+<!--   -->
+</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a 
name="navbar_top_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?overview-tree.html" target="_top">Frames</a></li>
+<li><a href="overview-tree.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip-navbar_top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">Hierarchy For All Packages</h1>
+<span class="strong">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="org/apache/samza/package-tree.html">org.apache.samza</a>, </li>
+<li><a 
href="org/apache/samza/checkpoint/package-tree.html">org.apache.samza.checkpoint</a>,
 </li>
+<li><a 
href="org/apache/samza/config/package-tree.html">org.apache.samza.config</a>, 
</li>
+<li><a 
href="org/apache/samza/container/package-tree.html">org.apache.samza.container</a>,
 </li>
+<li><a 
href="org/apache/samza/container/grouper/stream/package-tree.html">org.apache.samza.container.grouper.stream</a>,
 </li>
+<li><a href="org/apache/samza/job/package-tree.html">org.apache.samza.job</a>, 
</li>
+<li><a 
href="org/apache/samza/metrics/package-tree.html">org.apache.samza.metrics</a>, 
</li>
+<li><a 
href="org/apache/samza/serializers/package-tree.html">org.apache.samza.serializers</a>,
 </li>
+<li><a 
href="org/apache/samza/storage/package-tree.html">org.apache.samza.storage</a>, 
</li>
+<li><a 
href="org/apache/samza/system/package-tree.html">org.apache.samza.system</a>, 
</li>
+<li><a 
href="org/apache/samza/system/chooser/package-tree.html">org.apache.samza.system.chooser</a>,
 </li>
+<li><a 
href="org/apache/samza/task/package-tree.html">org.apache.samza.task</a>, </li>
+<li><a 
href="org/apache/samza/util/package-tree.html">org.apache.samza.util</a></li>
+</ul>
+</div>
+<div class="contentContainer">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.Object
+<ul>
+<li type="circle">org.apache.samza.system.chooser.<a 
href="org/apache/samza/system/chooser/BaseMessageChooser.html" title="class in 
org.apache.samza.system.chooser"><span 
class="strong">BaseMessageChooser</span></a> (implements 
org.apache.samza.system.chooser.<a 
href="org/apache/samza/system/chooser/MessageChooser.html" title="interface in 
org.apache.samza.system.chooser">MessageChooser</a>)</li>
+<li type="circle">org.apache.samza.util.<a 
href="org/apache/samza/util/BlockingEnvelopeMap.html" title="class in 
org.apache.samza.util"><span class="strong">BlockingEnvelopeMap</span></a> 
(implements org.apache.samza.system.<a 
href="org/apache/samza/system/SystemConsumer.html" title="interface in 
org.apache.samza.system">SystemConsumer</a>)</li>
+<li type="circle">org.apache.samza.util.<a 
href="org/apache/samza/util/BlockingEnvelopeMap.BlockingEnvelopeMapMetrics.html"
 title="class in org.apache.samza.util"><span 
class="strong">BlockingEnvelopeMap.BlockingEnvelopeMapMetrics</span></a></li>
+<li type="circle">org.apache.samza.checkpoint.<a 
href="org/apache/samza/checkpoint/Checkpoint.html" title="class in 
org.apache.samza.checkpoint"><span class="strong">Checkpoint</span></a></li>
+<li type="circle">org.apache.samza.job.<a 
href="org/apache/samza/job/CommandBuilder.html" title="class in 
org.apache.samza.job"><span class="strong">CommandBuilder</span></a></li>
+<li type="circle">org.apache.samza.config.<a 
href="org/apache/samza/config/Config.html" title="class in 
org.apache.samza.config"><span class="strong">Config</span></a> (implements 
java.util.Map&lt;K,V&gt;)
+<ul>
+<li type="circle">org.apache.samza.config.<a 
href="org/apache/samza/config/MapConfig.html" title="class in 
org.apache.samza.config"><span class="strong">MapConfig</span></a></li>
+</ul>
+</li>
+<li type="circle">org.apache.samza.metrics.<a 
href="org/apache/samza/metrics/Counter.html" title="class in 
org.apache.samza.metrics"><span class="strong">Counter</span></a> (implements 
org.apache.samza.metrics.<a href="org/apache/samza/metrics/Metric.html" 
title="interface in org.apache.samza.metrics">Metric</a>)</li>
+<li type="circle">org.apache.samza.metrics.<a 
href="org/apache/samza/metrics/Gauge.html" title="class in 
org.apache.samza.metrics"><span class="strong">Gauge</span></a>&lt;T&gt; 
(implements org.apache.samza.metrics.<a 
href="org/apache/samza/metrics/Metric.html" title="interface in 
org.apache.samza.metrics">Metric</a>)
+<ul>
+<li type="circle">org.apache.samza.util.<a 
href="org/apache/samza/util/BlockingEnvelopeMap.BufferGauge.html" title="class 
in org.apache.samza.util"><span 
class="strong">BlockingEnvelopeMap.BufferGauge</span></a></li>
+</ul>
+</li>
+<li type="circle">org.apache.samza.system.<a 
href="org/apache/samza/system/IncomingMessageEnvelope.html" title="class in 
org.apache.samza.system"><span 
class="strong">IncomingMessageEnvelope</span></a></li>
+<li type="circle">org.apache.samza.metrics.<a 
href="org/apache/samza/metrics/MetricsVisitor.html" title="class in 
org.apache.samza.metrics"><span class="strong">MetricsVisitor</span></a></li>
+<li type="circle">org.apache.samza.util.<a 
href="org/apache/samza/util/NoOpMetricsRegistry.html" title="class in 
org.apache.samza.util"><span class="strong">NoOpMetricsRegistry</span></a> 
(implements org.apache.samza.metrics.<a 
href="org/apache/samza/metrics/MetricsRegistry.html" title="interface in 
org.apache.samza.metrics">MetricsRegistry</a>)</li>
+<li type="circle">org.apache.samza.system.<a 
href="org/apache/samza/system/OutgoingMessageEnvelope.html" title="class in 
org.apache.samza.system"><span 
class="strong">OutgoingMessageEnvelope</span></a></li>
+<li type="circle">org.apache.samza.<a href="org/apache/samza/Partition.html" 
title="class in org.apache.samza"><span class="strong">Partition</span></a> 
(implements java.lang.Comparable&lt;T&gt;)</li>
+<li type="circle">org.apache.samza.container.<a 
href="org/apache/samza/container/SamzaContainerContext.html" title="class in 
org.apache.samza.container"><span 
class="strong">SamzaContainerContext</span></a></li>
+<li type="circle">org.apache.samza.util.<a 
href="org/apache/samza/util/SinglePartitionWithoutOffsetsSystemAdmin.html" 
title="class in org.apache.samza.util"><span 
class="strong">SinglePartitionWithoutOffsetsSystemAdmin</span></a> (implements 
org.apache.samza.system.<a href="org/apache/samza/system/SystemAdmin.html" 
title="interface in org.apache.samza.system">SystemAdmin</a>)</li>
+<li type="circle">org.apache.samza.metrics.<a 
href="org/apache/samza/metrics/SlidingTimeWindowReservoir.html" title="class in 
org.apache.samza.metrics"><span 
class="strong">SlidingTimeWindowReservoir</span></a> (implements 
org.apache.samza.metrics.<a href="org/apache/samza/metrics/Reservoir.html" 
title="interface in org.apache.samza.metrics">Reservoir</a>)</li>
+<li type="circle">org.apache.samza.metrics.<a 
href="org/apache/samza/metrics/Snapshot.html" title="class in 
org.apache.samza.metrics"><span class="strong">Snapshot</span></a></li>
+<li type="circle">org.apache.samza.system.<a 
href="org/apache/samza/system/SystemStream.html" title="class in 
org.apache.samza.system"><span class="strong">SystemStream</span></a>
+<ul>
+<li type="circle">org.apache.samza.system.<a 
href="org/apache/samza/system/SystemStreamPartition.html" title="class in 
org.apache.samza.system"><span class="strong">SystemStreamPartition</span></a> 
(implements java.lang.Comparable&lt;T&gt;)</li>
+</ul>
+</li>
+<li type="circle">org.apache.samza.system.<a 
href="org/apache/samza/system/SystemStreamMetadata.html" title="class in 
org.apache.samza.system"><span 
class="strong">SystemStreamMetadata</span></a></li>
+<li type="circle">org.apache.samza.system.<a 
href="org/apache/samza/system/SystemStreamMetadata.SystemStreamPartitionMetadata.html"
 title="class in org.apache.samza.system"><span 
class="strong">SystemStreamMetadata.SystemStreamPartitionMetadata</span></a></li>
+<li type="circle">org.apache.samza.system.<a 
href="org/apache/samza/system/SystemStreamPartitionIterator.html" title="class 
in org.apache.samza.system"><span 
class="strong">SystemStreamPartitionIterator</span></a> (implements 
java.util.Iterator&lt;E&gt;)</li>
+<li type="circle">org.apache.samza.container.<a 
href="org/apache/samza/container/TaskName.html" title="class in 
org.apache.samza.container"><span class="strong">TaskName</span></a> 
(implements java.lang.Comparable&lt;T&gt;)</li>
+<li type="circle">java.lang.Throwable (implements java.io.Serializable)
+<ul>
+<li type="circle">java.lang.Exception
+<ul>
+<li type="circle">java.lang.RuntimeException
+<ul>
+<li type="circle">org.apache.samza.<a 
href="org/apache/samza/SamzaException.html" title="class in 
org.apache.samza"><span class="strong">SamzaException</span></a>
+<ul>
+<li type="circle">org.apache.samza.config.<a 
href="org/apache/samza/config/ConfigException.html" title="class in 
org.apache.samza.config"><span class="strong">ConfigException</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li type="circle">org.apache.samza.metrics.<a 
href="org/apache/samza/metrics/Timer.html" title="class in 
org.apache.samza.metrics"><span class="strong">Timer</span></a> (implements 
org.apache.samza.metrics.<a href="org/apache/samza/metrics/Metric.html" 
title="interface in org.apache.samza.metrics">Metric</a>)</li>
+</ul>
+</li>
+</ul>
+<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
+<ul>
+<li type="circle">org.apache.samza.checkpoint.<a 
href="org/apache/samza/checkpoint/CheckpointManager.html" title="interface in 
org.apache.samza.checkpoint"><span 
class="strong">CheckpointManager</span></a></li>
+<li type="circle">org.apache.samza.checkpoint.<a 
href="org/apache/samza/checkpoint/CheckpointManagerFactory.html" 
title="interface in org.apache.samza.checkpoint"><span 
class="strong">CheckpointManagerFactory</span></a></li>
+<li type="circle">org.apache.samza.util.<a 
href="org/apache/samza/util/Clock.html" title="interface in 
org.apache.samza.util"><span class="strong">Clock</span></a></li>
+<li type="circle">org.apache.samza.task.<a 
href="org/apache/samza/task/ClosableTask.html" title="interface in 
org.apache.samza.task"><span class="strong">ClosableTask</span></a></li>
+<li type="circle">org.apache.samza.config.<a 
href="org/apache/samza/config/ConfigFactory.html" title="interface in 
org.apache.samza.config"><span class="strong">ConfigFactory</span></a></li>
+<li type="circle">org.apache.samza.config.<a 
href="org/apache/samza/config/ConfigRewriter.html" title="interface in 
org.apache.samza.config"><span class="strong">ConfigRewriter</span></a></li>
+<li type="circle">org.apache.samza.serializers.<a 
href="org/apache/samza/serializers/Deserializer.html" title="interface in 
org.apache.samza.serializers"><span 
class="strong">Deserializer</span></a>&lt;T&gt;
+<ul>
+<li type="circle">org.apache.samza.serializers.<a 
href="org/apache/samza/serializers/Serde.html" title="interface in 
org.apache.samza.serializers"><span class="strong">Serde</span></a>&lt;T&gt; 
(also extends org.apache.samza.serializers.<a 
href="org/apache/samza/serializers/Serializer.html" title="interface in 
org.apache.samza.serializers">Serializer</a>&lt;T&gt;)</li>
+</ul>
+</li>
+<li type="circle">org.apache.samza.task.<a 
href="org/apache/samza/task/InitableTask.html" title="interface in 
org.apache.samza.task"><span class="strong">InitableTask</span></a></li>
+<li type="circle">org.apache.samza.system.chooser.<a 
href="org/apache/samza/system/chooser/MessageChooser.html" title="interface in 
org.apache.samza.system.chooser"><span 
class="strong">MessageChooser</span></a></li>
+<li type="circle">org.apache.samza.system.chooser.<a 
href="org/apache/samza/system/chooser/MessageChooserFactory.html" 
title="interface in org.apache.samza.system.chooser"><span 
class="strong">MessageChooserFactory</span></a></li>
+<li type="circle">org.apache.samza.task.<a 
href="org/apache/samza/task/MessageCollector.html" title="interface in 
org.apache.samza.task"><span class="strong">MessageCollector</span></a></li>
+<li type="circle">org.apache.samza.metrics.<a 
href="org/apache/samza/metrics/Metric.html" title="interface in 
org.apache.samza.metrics"><span class="strong">Metric</span></a></li>
+<li type="circle">org.apache.samza.metrics.<a 
href="org/apache/samza/metrics/MetricsRegistry.html" title="interface in 
org.apache.samza.metrics"><span class="strong">MetricsRegistry</span></a>
+<ul>
+<li type="circle">org.apache.samza.metrics.<a 
href="org/apache/samza/metrics/ReadableMetricsRegistry.html" title="interface 
in org.apache.samza.metrics"><span 
class="strong">ReadableMetricsRegistry</span></a></li>
+</ul>
+</li>
+<li type="circle">org.apache.samza.metrics.<a 
href="org/apache/samza/metrics/MetricsReporter.html" title="interface in 
org.apache.samza.metrics"><span class="strong">MetricsReporter</span></a></li>
+<li type="circle">org.apache.samza.metrics.<a 
href="org/apache/samza/metrics/MetricsReporterFactory.html" title="interface in 
org.apache.samza.metrics"><span 
class="strong">MetricsReporterFactory</span></a></li>
+<li type="circle">org.apache.samza.metrics.<a 
href="org/apache/samza/metrics/ReadableMetricsRegistryListener.html" 
title="interface in org.apache.samza.metrics"><span 
class="strong">ReadableMetricsRegistryListener</span></a></li>
+<li type="circle">org.apache.samza.metrics.<a 
href="org/apache/samza/metrics/Reservoir.html" title="interface in 
org.apache.samza.metrics"><span class="strong">Reservoir</span></a></li>
+<li type="circle">org.apache.samza.serializers.<a 
href="org/apache/samza/serializers/SerdeFactory.html" title="interface in 
org.apache.samza.serializers"><span 
class="strong">SerdeFactory</span></a>&lt;T&gt;</li>
+<li type="circle">org.apache.samza.serializers.<a 
href="org/apache/samza/serializers/Serializer.html" title="interface in 
org.apache.samza.serializers"><span 
class="strong">Serializer</span></a>&lt;T&gt;
+<ul>
+<li type="circle">org.apache.samza.serializers.<a 
href="org/apache/samza/serializers/Serde.html" title="interface in 
org.apache.samza.serializers"><span class="strong">Serde</span></a>&lt;T&gt; 
(also extends org.apache.samza.serializers.<a 
href="org/apache/samza/serializers/Deserializer.html" title="interface in 
org.apache.samza.serializers">Deserializer</a>&lt;T&gt;)</li>
+</ul>
+</li>
+<li type="circle">org.apache.samza.storage.<a 
href="org/apache/samza/storage/StorageEngine.html" title="interface in 
org.apache.samza.storage"><span class="strong">StorageEngine</span></a></li>
+<li type="circle">org.apache.samza.storage.<a 
href="org/apache/samza/storage/StorageEngineFactory.html" title="interface in 
org.apache.samza.storage"><span 
class="strong">StorageEngineFactory</span></a>&lt;K,V&gt;</li>
+<li type="circle">org.apache.samza.job.<a 
href="org/apache/samza/job/StreamJob.html" title="interface in 
org.apache.samza.job"><span class="strong">StreamJob</span></a></li>
+<li type="circle">org.apache.samza.job.<a 
href="org/apache/samza/job/StreamJobFactory.html" title="interface in 
org.apache.samza.job"><span class="strong">StreamJobFactory</span></a></li>
+<li type="circle">org.apache.samza.task.<a 
href="org/apache/samza/task/StreamTask.html" title="interface in 
org.apache.samza.task"><span class="strong">StreamTask</span></a></li>
+<li type="circle">org.apache.samza.system.<a 
href="org/apache/samza/system/SystemAdmin.html" title="interface in 
org.apache.samza.system"><span class="strong">SystemAdmin</span></a></li>
+<li type="circle">org.apache.samza.system.<a 
href="org/apache/samza/system/SystemConsumer.html" title="interface in 
org.apache.samza.system"><span class="strong">SystemConsumer</span></a></li>
+<li type="circle">org.apache.samza.system.<a 
href="org/apache/samza/system/SystemFactory.html" title="interface in 
org.apache.samza.system"><span class="strong">SystemFactory</span></a></li>
+<li type="circle">org.apache.samza.system.<a 
href="org/apache/samza/system/SystemProducer.html" title="interface in 
org.apache.samza.system"><span class="strong">SystemProducer</span></a></li>
+<li type="circle">org.apache.samza.container.grouper.stream.<a 
href="org/apache/samza/container/grouper/stream/SystemStreamPartitionGrouper.html"
 title="interface in org.apache.samza.container.grouper.stream"><span 
class="strong">SystemStreamPartitionGrouper</span></a></li>
+<li type="circle">org.apache.samza.container.grouper.stream.<a 
href="org/apache/samza/container/grouper/stream/SystemStreamPartitionGrouperFactory.html"
 title="interface in org.apache.samza.container.grouper.stream"><span 
class="strong">SystemStreamPartitionGrouperFactory</span></a></li>
+<li type="circle">org.apache.samza.task.<a 
href="org/apache/samza/task/TaskContext.html" title="interface in 
org.apache.samza.task"><span class="strong">TaskContext</span></a></li>
+<li type="circle">org.apache.samza.task.<a 
href="org/apache/samza/task/TaskCoordinator.html" title="interface in 
org.apache.samza.task"><span class="strong">TaskCoordinator</span></a></li>
+<li type="circle">org.apache.samza.task.<a 
href="org/apache/samza/task/TaskLifecycleListener.html" title="interface in 
org.apache.samza.task"><span 
class="strong">TaskLifecycleListener</span></a></li>
+<li type="circle">org.apache.samza.task.<a 
href="org/apache/samza/task/TaskLifecycleListenerFactory.html" title="interface 
in org.apache.samza.task"><span 
class="strong">TaskLifecycleListenerFactory</span></a></li>
+<li type="circle">org.apache.samza.task.<a 
href="org/apache/samza/task/WindowableTask.html" title="interface in 
org.apache.samza.task"><span class="strong">WindowableTask</span></a></li>
+</ul>
+<h2 title="Enum Hierarchy">Enum Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.Object
+<ul>
+<li type="circle">java.lang.Enum&lt;E&gt; (implements 
java.lang.Comparable&lt;T&gt;, java.io.Serializable)
+<ul>
+<li type="circle">org.apache.samza.job.<a 
href="org/apache/samza/job/ApplicationStatus.html" title="enum in 
org.apache.samza.job"><span class="strong">ApplicationStatus</span></a></li>
+<li type="circle">org.apache.samza.system.<a 
href="org/apache/samza/system/SystemStreamMetadata.OffsetType.html" title="enum 
in org.apache.samza.system"><span 
class="strong">SystemStreamMetadata.OffsetType</span></a></li>
+<li type="circle">org.apache.samza.task.<a 
href="org/apache/samza/task/TaskCoordinator.RequestScope.html" title="enum in 
org.apache.samza.task"><span 
class="strong">TaskCoordinator.RequestScope</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar_bottom">
+<!--   -->
+</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a 
name="navbar_bottom_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?overview-tree.html" target="_top">Frames</a></li>
+<li><a href="overview-tree.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip-navbar_bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-samza/blob/1e2cfe22/docs/learn/documentation/versioned/api/javadocs/package-list
----------------------------------------------------------------------
diff --git a/docs/learn/documentation/versioned/api/javadocs/package-list 
b/docs/learn/documentation/versioned/api/javadocs/package-list
new file mode 100644
index 0000000..d504fbf
--- /dev/null
+++ b/docs/learn/documentation/versioned/api/javadocs/package-list
@@ -0,0 +1,13 @@
+org.apache.samza
+org.apache.samza.checkpoint
+org.apache.samza.config
+org.apache.samza.container
+org.apache.samza.container.grouper.stream
+org.apache.samza.job
+org.apache.samza.metrics
+org.apache.samza.serializers
+org.apache.samza.storage
+org.apache.samza.system
+org.apache.samza.system.chooser
+org.apache.samza.task
+org.apache.samza.util

http://git-wip-us.apache.org/repos/asf/incubator-samza/blob/1e2cfe22/docs/learn/documentation/versioned/api/javadocs/resources/background.gif
----------------------------------------------------------------------
diff --git 
a/docs/learn/documentation/versioned/api/javadocs/resources/background.gif 
b/docs/learn/documentation/versioned/api/javadocs/resources/background.gif
new file mode 100644
index 0000000..f471940
Binary files /dev/null and 
b/docs/learn/documentation/versioned/api/javadocs/resources/background.gif 
differ

http://git-wip-us.apache.org/repos/asf/incubator-samza/blob/1e2cfe22/docs/learn/documentation/versioned/api/javadocs/resources/tab.gif
----------------------------------------------------------------------
diff --git a/docs/learn/documentation/versioned/api/javadocs/resources/tab.gif 
b/docs/learn/documentation/versioned/api/javadocs/resources/tab.gif
new file mode 100644
index 0000000..1a73a83
Binary files /dev/null and 
b/docs/learn/documentation/versioned/api/javadocs/resources/tab.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-samza/blob/1e2cfe22/docs/learn/documentation/versioned/api/javadocs/resources/titlebar.gif
----------------------------------------------------------------------
diff --git 
a/docs/learn/documentation/versioned/api/javadocs/resources/titlebar.gif 
b/docs/learn/documentation/versioned/api/javadocs/resources/titlebar.gif
new file mode 100644
index 0000000..17443b3
Binary files /dev/null and 
b/docs/learn/documentation/versioned/api/javadocs/resources/titlebar.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-samza/blob/1e2cfe22/docs/learn/documentation/versioned/api/javadocs/resources/titlebar_end.gif
----------------------------------------------------------------------
diff --git 
a/docs/learn/documentation/versioned/api/javadocs/resources/titlebar_end.gif 
b/docs/learn/documentation/versioned/api/javadocs/resources/titlebar_end.gif
new file mode 100644
index 0000000..3ad78d4
Binary files /dev/null and 
b/docs/learn/documentation/versioned/api/javadocs/resources/titlebar_end.gif 
differ

http://git-wip-us.apache.org/repos/asf/incubator-samza/blob/1e2cfe22/docs/learn/documentation/versioned/api/javadocs/serialized-form.html
----------------------------------------------------------------------
diff --git 
a/docs/learn/documentation/versioned/api/javadocs/serialized-form.html 
b/docs/learn/documentation/versioned/api/javadocs/serialized-form.html
new file mode 100644
index 0000000..2f19fd8
--- /dev/null
+++ b/docs/learn/documentation/versioned/api/javadocs/serialized-form.html
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (version 1.7.0_65) on Tue Aug 05 21:46:34 PDT 2014 
-->
+<title>Serialized Form (samza-api 0.8.0-SNAPSHOT API)</title>
+<meta name="date" content="2014-08-05">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+</head>
+<body>
+<script type="text/javascript"><!--
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Serialized Form (samza-api 0.8.0-SNAPSHOT API)";
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar_top">
+<!--   -->
+</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a 
name="navbar_top_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?serialized-form.html" target="_top">Frames</a></li>
+<li><a href="serialized-form.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip-navbar_top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Serialized Form" class="title">Serialized Form</h1>
+</div>
+<div class="serializedFormContainer">
+<ul class="blockList">
+<li class="blockList">
+<h2 title="Package">Package&nbsp;org.apache.samza</h2>
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.samza.SamzaException">
+<!--   -->
+</a>
+<h3>Class <a href="org/apache/samza/SamzaException.html" title="class in 
org.apache.samza">org.apache.samza.SamzaException</a> extends 
java.lang.RuntimeException implements Serializable</h3>
+<dl class="nameValue">
+<dt>serialVersionUID:</dt>
+<dd>1L</dd>
+</dl>
+</li>
+</ul>
+</li>
+<li class="blockList">
+<h2 title="Package">Package&nbsp;org.apache.samza.config</h2>
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.samza.config.ConfigException">
+<!--   -->
+</a>
+<h3>Class <a href="org/apache/samza/config/ConfigException.html" title="class 
in org.apache.samza.config">org.apache.samza.config.ConfigException</a> extends 
<a href="org/apache/samza/SamzaException.html" title="class in 
org.apache.samza">SamzaException</a> implements Serializable</h3>
+<dl class="nameValue">
+<dt>serialVersionUID:</dt>
+<dd>1L</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar_bottom">
+<!--   -->
+</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a 
name="navbar_bottom_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?serialized-form.html" target="_top">Frames</a></li>
+<li><a href="serialized-form.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip-navbar_bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-samza/blob/1e2cfe22/docs/learn/documentation/versioned/api/javadocs/stylesheet.css
----------------------------------------------------------------------
diff --git a/docs/learn/documentation/versioned/api/javadocs/stylesheet.css 
b/docs/learn/documentation/versioned/api/javadocs/stylesheet.css
new file mode 100644
index 0000000..0aeaa97
--- /dev/null
+++ b/docs/learn/documentation/versioned/api/javadocs/stylesheet.css
@@ -0,0 +1,474 @@
+/* Javadoc style sheet */
+/*
+Overall document style
+*/
+body {
+    background-color:#ffffff;
+    color:#353833;
+    font-family:Arial, Helvetica, sans-serif;
+    font-size:76%;
+    margin:0;
+}
+a:link, a:visited {
+    text-decoration:none;
+    color:#4c6b87;
+}
+a:hover, a:focus {
+    text-decoration:none;
+    color:#bb7a2a;
+}
+a:active {
+    text-decoration:none;
+    color:#4c6b87;
+}
+a[name] {
+    color:#353833;
+}
+a[name]:hover {
+    text-decoration:none;
+    color:#353833;
+}
+pre {
+    font-size:1.3em;
+}
+h1 {
+    font-size:1.8em;
+}
+h2 {
+    font-size:1.5em;
+}
+h3 {
+    font-size:1.4em;
+}
+h4 {
+    font-size:1.3em;
+}
+h5 {
+    font-size:1.2em;
+}
+h6 {
+    font-size:1.1em;
+}
+ul {
+    list-style-type:disc;
+}
+code, tt {
+    font-size:1.2em;
+}
+dt code {
+    font-size:1.2em;
+}
+table tr td dt code {
+    font-size:1.2em;
+    vertical-align:top;
+}
+sup {
+    font-size:.6em;
+}
+/*
+Document title and Copyright styles
+*/
+.clear {
+    clear:both;
+    height:0px;
+    overflow:hidden;
+}
+.aboutLanguage {
+    float:right;
+    padding:0px 21px;
+    font-size:.8em;
+    z-index:200;
+    margin-top:-7px;
+}
+.legalCopy {
+    margin-left:.5em;
+}
+.bar a, .bar a:link, .bar a:visited, .bar a:active {
+    color:#FFFFFF;
+    text-decoration:none;
+}
+.bar a:hover, .bar a:focus {
+    color:#bb7a2a;
+}
+.tab {
+    background-color:#0066FF;
+    background-image:url(resources/titlebar.gif);
+    background-position:left top;
+    background-repeat:no-repeat;
+    color:#ffffff;
+    padding:8px;
+    width:5em;
+    font-weight:bold;
+}
+/*
+Navigation bar styles
+*/
+.bar {
+    background-image:url(resources/background.gif);
+    background-repeat:repeat-x;
+    color:#FFFFFF;
+    padding:.8em .5em .4em .8em;
+    height:auto;/*height:1.8em;*/
+    font-size:1em;
+    margin:0;
+}
+.topNav {
+    background-image:url(resources/background.gif);
+    background-repeat:repeat-x;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+}
+.bottomNav {
+    margin-top:10px;
+    background-image:url(resources/background.gif);
+    background-repeat:repeat-x;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+}
+.subNav {
+    background-color:#dee3e9;
+    border-bottom:1px solid #9eadc0;
+    float:left;
+    width:100%;
+    overflow:hidden;
+}
+.subNav div {
+    clear:left;
+    float:left;
+    padding:0 0 5px 6px;
+}
+ul.navList, ul.subNavList {
+    float:left;
+    margin:0 25px 0 0;
+    padding:0;
+}
+ul.navList li{
+    list-style:none;
+    float:left;
+    padding:3px 6px;
+}
+ul.subNavList li{
+    list-style:none;
+    float:left;
+    font-size:90%;
+}
+.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, 
.bottomNav a:active, .bottomNav a:visited {
+    color:#FFFFFF;
+    text-decoration:none;
+}
+.topNav a:hover, .bottomNav a:hover {
+    text-decoration:none;
+    color:#bb7a2a;
+}
+.navBarCell1Rev {
+    background-image:url(resources/tab.gif);
+    background-color:#a88834;
+    color:#FFFFFF;
+    margin: auto 5px;
+    border:1px solid #c9aa44;
+}
+/*
+Page header and footer styles
+*/
+.header, .footer {
+    clear:both;
+    margin:0 20px;
+    padding:5px 0 0 0;
+}
+.indexHeader {
+    margin:10px;
+    position:relative;
+}
+.indexHeader h1 {
+    font-size:1.3em;
+}
+.title {
+    color:#2c4557;
+    margin:10px 0;
+}
+.subTitle {
+    margin:5px 0 0 0;
+}
+.header ul {
+    margin:0 0 25px 0;
+    padding:0;
+}
+.footer ul {
+    margin:20px 0 5px 0;
+}
+.header ul li, .footer ul li {
+    list-style:none;
+    font-size:1.2em;
+}
+/*
+Heading styles
+*/
+div.details ul.blockList ul.blockList ul.blockList li.blockList h4, 
div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
+    background-color:#dee3e9;
+    border-top:1px solid #9eadc0;
+    border-bottom:1px solid #9eadc0;
+    margin:0 0 6px -8px;
+    padding:2px 5px;
+}
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+    background-color:#dee3e9;
+    border-top:1px solid #9eadc0;
+    border-bottom:1px solid #9eadc0;
+    margin:0 0 6px -8px;
+    padding:2px 5px;
+}
+ul.blockList ul.blockList li.blockList h3 {
+    padding:0;
+    margin:15px 0;
+}
+ul.blockList li.blockList h2 {
+    padding:0px 0 20px 0;
+}
+/*
+Page layout container styles
+*/
+.contentContainer, .sourceContainer, .classUseContainer, 
.serializedFormContainer, .constantValuesContainer {
+    clear:both;
+    padding:10px 20px;
+    position:relative;
+}
+.indexContainer {
+    margin:10px;
+    position:relative;
+    font-size:1.0em;
+}
+.indexContainer h2 {
+    font-size:1.1em;
+    padding:0 0 3px 0;
+}
+.indexContainer ul {
+    margin:0;
+    padding:0;
+}
+.indexContainer ul li {
+    list-style:none;
+}
+.contentContainer .description dl dt, .contentContainer .details dl dt, 
.serializedFormContainer dl dt {
+    font-size:1.1em;
+    font-weight:bold;
+    margin:10px 0 0 0;
+    color:#4E4E4E;
+}
+.contentContainer .description dl dd, .contentContainer .details dl dd, 
.serializedFormContainer dl dd {
+    margin:10px 0 10px 20px;
+}
+.serializedFormContainer dl.nameValue dt {
+    margin-left:1px;
+    font-size:1.1em;
+    display:inline;
+    font-weight:bold;
+}
+.serializedFormContainer dl.nameValue dd {
+    margin:0 0 0 1px;
+    font-size:1.1em;
+    display:inline;
+}
+/*
+List styles
+*/
+ul.horizontal li {
+    display:inline;
+    font-size:0.9em;
+}
+ul.inheritance {
+    margin:0;
+    padding:0;
+}
+ul.inheritance li {
+    display:inline;
+    list-style:none;
+}
+ul.inheritance li ul.inheritance {
+    margin-left:15px;
+    padding-left:15px;
+    padding-top:1px;
+}
+ul.blockList, ul.blockListLast {
+    margin:10px 0 10px 0;
+    padding:0;
+}
+ul.blockList li.blockList, ul.blockListLast li.blockList {
+    list-style:none;
+    margin-bottom:25px;
+}
+ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast 
li.blockList {
+    padding:0px 20px 5px 10px;
+    border:1px solid #9eadc0;
+    background-color:#f9f9f9;
+}
+ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList 
ul.blockListLast li.blockList {
+    padding:0 0 5px 8px;
+    background-color:#ffffff;
+    border:1px solid #9eadc0;
+    border-top:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
+    margin-left:0;
+    padding-left:0;
+    padding-bottom:15px;
+    border:none;
+    border-bottom:1px solid #9eadc0;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
+    list-style:none;
+    border-bottom:none;
+    padding-bottom:0;
+}
+table tr td dl, table tr td dl dt, table tr td dl dd {
+    margin-top:0;
+    margin-bottom:1px;
+}
+/*
+Table styles
+*/
+.contentContainer table, .classUseContainer table, .constantValuesContainer 
table {
+    border-bottom:1px solid #9eadc0;
+    width:100%;
+}
+.contentContainer ul li table, .classUseContainer ul li table, 
.constantValuesContainer ul li table {
+    width:100%;
+}
+.contentContainer .description table, .contentContainer .details table {
+    border-bottom:none;
+}
+.contentContainer ul li table th.colOne, .contentContainer ul li table 
th.colFirst, .contentContainer ul li table th.colLast, .classUseContainer ul li 
table th, .constantValuesContainer ul li table th, .contentContainer ul li 
table td.colOne, .contentContainer ul li table td.colFirst, .contentContainer 
ul li table td.colLast, .classUseContainer ul li table td, 
.constantValuesContainer ul li table td{
+    vertical-align:top;
+    padding-right:20px;
+}
+.contentContainer ul li table th.colLast, .classUseContainer ul li table 
th.colLast,.constantValuesContainer ul li table th.colLast,
+.contentContainer ul li table td.colLast, .classUseContainer ul li table 
td.colLast,.constantValuesContainer ul li table td.colLast,
+.contentContainer ul li table th.colOne, .classUseContainer ul li table 
th.colOne,
+.contentContainer ul li table td.colOne, .classUseContainer ul li table 
td.colOne {
+    padding-right:3px;
+}
+.overviewSummary caption, .packageSummary caption, .contentContainer 
ul.blockList li.blockList caption, .summary caption, .classUseContainer 
caption, .constantValuesContainer caption {
+    position:relative;
+    text-align:left;
+    background-repeat:no-repeat;
+    color:#FFFFFF;
+    font-weight:bold;
+    clear:none;
+    overflow:hidden;
+    padding:0px;
+    margin:0px;
+}
+caption a:link, caption a:hover, caption a:active, caption a:visited {
+    color:#FFFFFF;
+}
+.overviewSummary caption span, .packageSummary caption span, .contentContainer 
ul.blockList li.blockList caption span, .summary caption span, 
.classUseContainer caption span, .constantValuesContainer caption span {
+    white-space:nowrap;
+    padding-top:8px;
+    padding-left:8px;
+    display:block;
+    float:left;
+    background-image:url(resources/titlebar.gif);
+    height:18px;
+}
+.overviewSummary .tabEnd, .packageSummary .tabEnd, .contentContainer 
ul.blockList li.blockList .tabEnd, .summary .tabEnd, .classUseContainer 
.tabEnd, .constantValuesContainer .tabEnd {
+    width:10px;
+    background-image:url(resources/titlebar_end.gif);
+    background-repeat:no-repeat;
+    background-position:top right;
+    position:relative;
+    float:left;
+}
+ul.blockList ul.blockList li.blockList table {
+    margin:0 0 12px 0px;
+    width:100%;
+}
+.tableSubHeadingColor {
+    background-color: #EEEEFF;
+}
+.altColor {
+    background-color:#eeeeef;
+}
+.rowColor {
+    background-color:#ffffff;
+}
+.overviewSummary td, .packageSummary td, .contentContainer ul.blockList 
li.blockList td, .summary td, .classUseContainer td, .constantValuesContainer 
td {
+    text-align:left;
+    padding:3px 3px 3px 7px;
+}
+th.colFirst, th.colLast, th.colOne, .constantValuesContainer th {
+    background:#dee3e9;
+    border-top:1px solid #9eadc0;
+    border-bottom:1px solid #9eadc0;
+    text-align:left;
+    padding:3px 3px 3px 7px;
+}
+td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, 
td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst 
a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, 
td.colLast a:hover, .constantValuesContainer td a:link, 
.constantValuesContainer td a:active, .constantValuesContainer td a:visited, 
.constantValuesContainer td a:hover {
+    font-weight:bold;
+}
+td.colFirst, th.colFirst {
+    border-left:1px solid #9eadc0;
+    white-space:nowrap;
+}
+td.colLast, th.colLast {
+    border-right:1px solid #9eadc0;
+}
+td.colOne, th.colOne {
+    border-right:1px solid #9eadc0;
+    border-left:1px solid #9eadc0;
+}
+table.overviewSummary  {
+    padding:0px;
+    margin-left:0px;
+}
+table.overviewSummary td.colFirst, table.overviewSummary th.colFirst,
+table.overviewSummary td.colOne, table.overviewSummary th.colOne {
+    width:25%;
+    vertical-align:middle;
+}
+table.packageSummary td.colFirst, table.overviewSummary th.colFirst {
+    width:25%;
+    vertical-align:middle;
+}
+/*
+Content styles
+*/
+.description pre {
+    margin-top:0;
+}
+.deprecatedContent {
+    margin:0;
+    padding:10px 0;
+}
+.docSummary {
+    padding:0;
+}
+/*
+Formatting effect styles
+*/
+.sourceLineNo {
+    color:green;
+    padding:0 30px 0 0;
+}
+h1.hidden {
+    visibility:hidden;
+    overflow:hidden;
+    font-size:.9em;
+}
+.block {
+    display:block;
+    margin:3px 0 0 0;
+}
+.strong {
+    font-weight:bold;
+}

http://git-wip-us.apache.org/repos/asf/incubator-samza/blob/1e2cfe22/docs/learn/documentation/versioned/api/overview.md
----------------------------------------------------------------------
diff --git a/docs/learn/documentation/versioned/api/overview.md 
b/docs/learn/documentation/versioned/api/overview.md
new file mode 100644
index 0000000..6712344
--- /dev/null
+++ b/docs/learn/documentation/versioned/api/overview.md
@@ -0,0 +1,142 @@
+---
+layout: page
+title: API Overview
+---
+<!--
+   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.
+-->
+
+When writing a stream processor for Samza, you must implement the 
[StreamTask](javadocs/org/apache/samza/task/StreamTask.html) interface:
+
+{% highlight java %}
+package com.example.samza;
+
+public class MyTaskClass implements StreamTask {
+
+  public void process(IncomingMessageEnvelope envelope,
+                      MessageCollector collector,
+                      TaskCoordinator coordinator) {
+    // process message
+  }
+}
+{% endhighlight %}
+
+When you run your job, Samza will create several instances of your class 
(potentially on multiple machines). These task instances process the messages 
in the input streams.
+
+In your job's configuration you can tell Samza which streams you want to 
consume. An incomplete example could look like this (see the [configuration 
documentation](../jobs/configuration.html) for more detail):
+
+{% highlight jproperties %}
+# This is the class above, which Samza will instantiate when the job is run
+task.class=com.example.samza.MyTaskClass
+
+# Define a system called "kafka" (you can give it any name, and you can define
+# multiple systems if you want to process messages from different sources)
+systems.kafka.samza.factory=org.apache.samza.system.kafka.KafkaSystemFactory
+
+# The job consumes a topic called "PageViewEvent" from the "kafka" system
+task.inputs=kafka.PageViewEvent
+
+# Define a serializer/deserializer called "json" which parses JSON messages
+serializers.registry.json.class=org.apache.samza.serializers.JsonSerdeFactory
+
+# Use the "json" serializer for messages in the "PageViewEvent" topic
+systems.kafka.streams.PageViewEvent.samza.msg.serde=json
+{% endhighlight %}
+
+For each message that Samza receives from the task's input streams, the 
*process* method is called. The 
[envelope](javadocs/org/apache/samza/system/IncomingMessageEnvelope.html) 
contains three things of importance: the message, the key, and the stream that 
the message came from.
+
+{% highlight java %}
+/** Every message that is delivered to a StreamTask is wrapped
+ * in an IncomingMessageEnvelope, which contains metadata about
+ * the origin of the message. */
+public class IncomingMessageEnvelope {
+  /** A deserialized message. */
+  Object getMessage() { ... }
+
+  /** A deserialized key. */
+  Object getKey() { ... }
+
+  /** The stream and partition that this message came from. */
+  SystemStreamPartition getSystemStreamPartition() { ... }
+}
+{% endhighlight %}
+
+The key and value are declared as Object, and need to be cast to the correct 
type. If you don't configure a 
[serializer/deserializer](../container/serialization.html), they are typically 
Java byte arrays. A deserializer can convert these bytes into any other type, 
for example the JSON deserializer mentioned above parses the byte array into 
java.util.Map, java.util.List and String objects.
+
+The `getSystemStreamPartition()` method returns a 
[SystemStreamPartition](javadocs/org/apache/samza/system/SystemStreamPartition.html)
 object, which tells you where the message came from. It consists of three 
parts:
+
+1. The *system*: the name of the system from which the message came, as 
defined in your job configuration. You can have multiple systems for input 
and/or output, each with a different name.
+2. The *stream name*: the name of the stream (topic, queue) within the source 
system. This is also defined in the job configuration.
+3. The [*partition*](javadocs/org/apache/samza/Partition.html): a stream is 
normally split into several partitions, and each partition is assigned to one 
StreamTask instance by Samza.
+
+The API looks like this:
+
+{% highlight java %}
+/** A triple of system name, stream name and partition. */
+public class SystemStreamPartition extends SystemStream {
+
+  /** The name of the system which provides this stream. It is
+      defined in the Samza job's configuration. */
+  public String getSystem() { ... }
+
+  /** The name of the stream/topic/queue within the system. */
+  public String getStream() { ... }
+
+  /** The partition within the stream. */
+  public Partition getPartition() { ... }
+}
+{% endhighlight %}
+
+In the example job configuration above, the system name is "kafka", the stream 
name is "PageViewEvent". (The name "kafka" isn't special &mdash; you can give 
your system any name you want.) If you have several input streams feeding into 
your StreamTask, you can use the SystemStreamPartition to determine what kind 
of message you've received.
+
+What about sending messages? If you take a look at the process() method in 
StreamTask, you'll see that you get a 
[MessageCollector](javadocs/org/apache/samza/task/MessageCollector.html).
+
+{% highlight java %}
+/** When a task wishes to send a message, it uses this interface. */
+public interface MessageCollector {
+  void send(OutgoingMessageEnvelope envelope);
+}
+{% endhighlight %}
+
+To send a message, you create an 
[OutgoingMessageEnvelope](javadocs/org/apache/samza/system/OutgoingMessageEnvelope.html)
 object and pass it to the message collector. At a minimum, the envelope 
specifies the message you want to send, and the system and stream name to send 
it to. Optionally you can specify the partitioning key and other parameters. 
See the 
[javadoc](javadocs/org/apache/samza/system/OutgoingMessageEnvelope.html) for 
details.
+
+**NOTE:** Please only use the MessageCollector object within the `process()` 
method. If you hold on to a MessageCollector instance and use it again later, 
your messages may not be sent correctly.
+
+For example, here's a simple task that splits each input message into words, 
and emits each word as a separate message:
+
+{% highlight java %}
+public class SplitStringIntoWords implements StreamTask {
+
+  // Send outgoing messages to a stream called "words"
+  // in the "kafka" system.
+  private final SystemStream OUTPUT_STREAM =
+    new SystemStream("kafka", "words");
+
+  public void process(IncomingMessageEnvelope envelope,
+                      MessageCollector collector,
+                      TaskCoordinator coordinator) {
+    String message = (String) envelope.getMessage();
+
+    for (String word : message.split(" ")) {
+      // Use the word as the key, and 1 as the value.
+      // A second task can add the 1's to get the word count.
+      collector.send(new OutgoingMessageEnvelope(OUTPUT_STREAM, word, 1));
+    }
+  }
+}
+{% endhighlight %}
+
+## [SamzaContainer &raquo;](../container/samza-container.html)

http://git-wip-us.apache.org/repos/asf/incubator-samza/blob/1e2cfe22/docs/learn/documentation/versioned/comparisons/introduction.md
----------------------------------------------------------------------
diff --git a/docs/learn/documentation/versioned/comparisons/introduction.md 
b/docs/learn/documentation/versioned/comparisons/introduction.md
new file mode 100644
index 0000000..88e17bb
--- /dev/null
+++ b/docs/learn/documentation/versioned/comparisons/introduction.md
@@ -0,0 +1,80 @@
+---
+layout: page
+title: Comparison Introduction
+---
+<!--
+   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.
+-->
+
+Here are a few of the high-level design decisions that we think make Samza a 
bit different from other stream processing projects.
+
+### The Stream Model
+
+Streams are the input and output to Samza jobs. Samza has a very strong model 
of a stream&mdash;it is more than just a simple message exchange mechanism. A 
stream in Samza is a partitioned, ordered-per-partition, replayable, 
multi-subscriber, lossless sequence of messages. Streams are not just inputs 
and outputs to the system, but also buffers that isolate processing stages from 
each other.
+
+This stronger model requires persistence, fault-tolerance, and buffering in 
the stream implementation, but it has several benefits.
+
+First, delays in a downstream processing stage cannot block an upstream stage. 
A Samza job can stop consuming for a few minutes, or even a few hours (perhaps 
because of a bad deploy, or a long-running computation) without having any 
effect on upstream jobs. This makes Samza suitable for large deployments, such 
as processing all data flows in a large company: isolation between jobs is 
essential when they are written, owned, and run by different teams in different 
code bases with varying SLAs.
+
+This is motivated by our experience building analogous offline processing 
pipelines in Hadoop. In Hadoop the processing stages are MapReduce jobs, and 
the output of a processing stage is a directory of files on HDFS. The input to 
the next processing stage is simply the files produced by the earlier stage. We 
have found that this strong isolation between stages makes it possible to have 
hundreds of loosely coupled jobs, maintained by different teams, that comprise 
an offline processing ecosystem. Our goal is to replicate this kind of rich 
ecosystem in a near-real-time setting.
+
+The second benefit of this stronger model is that all stages are 
multi-subscriber. In practical terms this means that if one person adds a set 
of processing flows that create output data streams, others can see the output, 
consume it, and build on it, without introducing any coupling of code between 
the jobs. As a happy side-effect, this makes debugging flows easy, as you can 
manually inspect the output of any stage.
+
+Finally, this strong stream model greatly simplifies the implementation of 
features in the Samza framework. Each job need only be concerned with its own 
inputs and outputs, and in the case of a fault, each job can be recovered and 
restarted independently. There is no need for central control over the entire 
dataflow graph.
+
+The tradeoff we need to make for this stronger stream model is that messages 
are written to disk. We are willing to make this tradeoff because MapReduce and 
HDFS have shown that durable storage can offer very high read and write 
throughput, and almost limitless disk space. This observation is the foundation 
of Kafka, which allows hundreds of MB/sec of replicated throughput, and many TB 
of disk space per node. When used this way, disk throughput often isn't the 
bottleneck.
+
+MapReduce is sometimes criticized for writing to disk more than necessary. 
However, this criticism applies less to stream processing: batch processing 
like MapReduce often is used for processing large historical collections of 
data in a short period of time (e.g. query a month of data in ten minutes), 
whereas stream processing mostly needs to keep up with the steady-state flow of 
data (process 10 minutes worth of data in 10 minutes). This means that the raw 
throughput requirements for stream processing are, generally, orders of 
magnitude lower than for batch processing.
+
+### <a name="state"></a> State
+
+Only the very simplest stream processing problems are stateless (i.e. can 
process one message at a time, independently of all other messages). Many 
stream processing applications require a job to maintain some state. For 
example:
+
+* If you want to know how many events have been seen for a particular user ID, 
you need to keep a counter for each user ID.
+* If you want to know how many distinct users visit your site per day, you 
need to keep a set of all user IDs for which you've seen at least one event 
today.
+* If you want to join two streams (for example, if you want to determine the 
click-through rate of adverts by joining a stream of ad impression events with 
a stream of ad click events) you need to store the event from one stream until 
you receive the corresponding event from the other stream.
+* If you want to augment events with some information from a database (for 
example, extending a page-view event with some information about the user who 
viewed the page), the job needs to access the current state of that database.
+
+Some kinds of state, such as counters, could be kept in-memory in the tasks, 
but then that state would be lost if the job is restarted. Alternatively, you 
can keep the state in a remote database, but performance can become 
unacceptable if you need to perform a database query for every message you 
process. Kafka can easily handle 100k-500k messages/sec per node (depending on 
message size), but throughput for queries against a remote key-value store tend 
to be closer to 1-5k requests per second &mdash; two orders of magnitude slower.
+
+In Samza, we have put particular effort into supporting high-performance, 
reliable state. The key is to keep state local to each node (so that queries 
don't need to go over the network), and to make it robust to machine failures 
by replicating state changes to another stream.
+
+This approach is especially interesting when combined with database *change 
capture*. Take the
+example above, where you have a stream of page-view events including the ID of 
the user who viewed the page, and you want to augment the events with more 
information about that user. At first glance, it looks as though you have no 
choice but to query the user database to look up every user ID you see (perhaps 
with some caching). With Samza, we can do better.
+
+*Change capture* means that every time some data changes in your database, you 
get an event telling you what changed. If you have that stream of change 
events, going all the way back to when the database was created, you can 
reconstruct the entire contents of the database by replaying the stream. That 
*changelog* stream can also be used as input to a Samza job.
+
+Now you can write a Samza job that takes both the page-view event and the 
changelog as inputs. You make sure that they are partitioned on the same key 
(e.g. user ID). Every time a changelog event comes in, you write the updated 
user information to the task's local storage. Every time a page-view event 
comes in, you read the current information about that user from local storage. 
That way, you can keep all the state local to a task, and never need to query a 
remote database.
+
+<img 
src="/img/{{site.version}}/learn/documentation/introduction/samza_state.png" 
alt="Stateful Processing" class="diagram-large">
+
+In effect, you now have a replica of the main database, broken into small 
partitions that are on the same machines as the Samza tasks. Database writes 
still need to go to the main database, but when you need to read from the 
database in order to process a message from the input stream, you can just 
consult the task's local state.
+
+This approach is not only much faster than querying a remote database, it is 
also much better for operations. If you are processing a high-volume stream 
with Samza, and making a remote query for every message, you can easily 
overwhelm the database with requests and affect other services using the same 
database. By contrast, when a task uses local state, it is isolated from 
everything else, so it cannot accidentally bring down other services.
+
+Partitioned local state is not always appropriate, and not required &mdash; 
nothing in Samza prevents calls to external databases. If you cannot produce a 
feed of changes from your database, or you need to rely on logic that exists 
only in a remote service, then it may be more convenient to call a remote 
service from your Samza job. But if you want to use local state, it works out 
of the box.
+
+### Execution Framework
+
+One final decision we made was to not build a custom distributed execution 
system in Samza. Instead, execution is pluggable, and currently completely 
handled by YARN. This has two benefits.
+
+The first benefit is practical: there is another team of smart people working 
on the execution framework. YARN is developing at a rapid pace, and already 
supports a rich set of features around resource quotas and security. This 
allows you to control what portion of the cluster is allocated to which users 
and groups, and also control the resource utilization on individual nodes (CPU, 
memory, etc) via cgroups. YARN is run at massive scale to support Hadoop and 
will likely become an ubiquitous layer. Since Samza runs entirely through YARN, 
there are no separate daemons or masters to run beyond the YARN cluster itself. 
In other words, if you already have Kafka and YARN, you don't need to install 
anything in order to run Samza jobs.
+
+Secondly, our integration with YARN is completely componentized. It exists in 
a separate package, and the main Samza framework does not depend on it at build 
time. This means that YARN can be replaced with other virtualization frameworks 
&mdash; in particular, we are interested in adding direct AWS integration. Many 
companies run in AWS which is itself a virtualization framework, which for 
Samza's purposes is equivalent to YARN: it allows you to create and destroy 
virtual "container" machines and guarantees fixed resources for these 
containers. Since stream processing jobs are long-running, it is a bit silly to 
run a YARN cluster inside AWS and then schedule individual jobs within this 
cluster. Instead, a more sensible approach would be to directly allocate a set 
of EC2 instances for your jobs.
+
+We think there will be a lot of innovation both in open source virtualization 
frameworks like Mesos and YARN and in commercial cloud providers like Amazon, 
so it makes sense to integrate with them.
+
+## [MUPD8 &raquo;](mupd8.html)

http://git-wip-us.apache.org/repos/asf/incubator-samza/blob/1e2cfe22/docs/learn/documentation/versioned/comparisons/mupd8.md
----------------------------------------------------------------------
diff --git a/docs/learn/documentation/versioned/comparisons/mupd8.md 
b/docs/learn/documentation/versioned/comparisons/mupd8.md
new file mode 100644
index 0000000..53417f9
--- /dev/null
+++ b/docs/learn/documentation/versioned/comparisons/mupd8.md
@@ -0,0 +1,88 @@
+---
+layout: page
+title: MUPD8
+---
+<!--
+   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.
+-->
+
+*People generally want to know how similar systems compare. We've done our 
best to fairly contrast the feature sets of Samza with other systems. But we 
aren't experts in these frameworks, and we are, of course, totally biased. If 
we have goofed anything, please let us know and we will correct it.*
+
+### Durability
+
+MUPD8 makes no durability or delivery guarantees. Within MUPD8, stream 
processor tasks receive messages at most once. Samza uses Kafka for messaging, 
which guarantees message delivery.
+
+### Ordering
+
+As with durability, developers would ideally like their stream processors to 
receive messages in exactly the order that they were written.
+
+We don't entirely follow MUPD8's description of their ordering guarantees, but 
it seems to guarantee that all messages will be processed in the order in which 
they are written to MUPD8 queues, which is comparable to Kafka and Samza's 
guarantee.
+
+### Buffering
+
+A critical issue for handling large data flows is handling back pressure when 
one downstream processing stage gets slow.
+
+MUPD8 buffers messages in an in-memory queue when passing messages between two 
MUPD8 tasks. When a queue fills up, developers have the option to either drop 
the messages on the floor, log the messages to local disk, or block until the 
queue frees up. All of these options are sub-optimal. Dropping messages leads 
to incorrect results. Blocking your stream processor can have a cascading 
effect, where the slowest processor blocks all upstream processors, which in 
turn block their upstream processors, until the whole system grinds to a halt. 
Logging to local disk is the most reasonable, but when a fault occurs, those 
messages are lost on failover.
+
+By adopting Kafka's broker as a remote buffer, Samza solves all of these 
problems. It doesn't need to block because consumers and producers are 
decoupled using the Kafka brokers' disks as buffers. Messages are not dropped 
because Kafka brokers are highly available as of version 0.8. In the event of a 
failure, when a Samza job is restarted on another machine, its input and output 
are not lost, because they are stored remotely on replicated Kafka brokers.
+
+### State Management
+
+As described in the [introduction](introduction.html#state), stream processors 
often need to maintain some state as they process messages. Different 
frameworks have different approaches to handling such state, and what to do in 
case of a failure.
+
+MUPD8 uses a write back caching strategy to manage in-memory state that is 
periodically written back to Cassandra.
+
+Samza maintains state locally with the task. This allows state larger than 
will fit in memory. State is persisted to an output stream to enable recovery 
should the task fail. We believe this design enables stronger fault tolerance 
semantics, because the change log captures the evolution of state, allowing the 
state of a task to restored to a consistent point in time.
+
+### Deployment and execution
+
+MUPD8 includes a custom execution framework. The functionality that this 
framework supports in terms of users and resource limits isn't clear to us.
+
+Samza leverages YARN to deploy user code, and execute it in a distributed 
environment.
+
+### Fault Tolerance
+
+What should a stream processing system do when a machine or processor fails?
+
+MUPD8 uses its custom equivalent to YARN to manage fault tolerance. When a 
stream processor is unable to send a message to a downstream processor, it 
notifies MUPD8's coordinator, and all other machines are notified. The machines 
then send all messages to a new machine based on the key hash that's used. 
Messages and state can be lost when this happens.
+
+Samza uses YARN to manage fault tolerance. YARN detects when nodes or Samza 
tasks fail, and notifies Samza's 
[ApplicationMaster](../yarn/application-master.html). At that point, it's up to 
Samza to decide what to do. Generally, this means re-starting the task on 
another machine. Since messages are persisted to Kafka brokers remotely, and 
there are no in-memory queues, no messages should be lost (unless the 
processors are using async Kafka producers, which offer higher performance but 
don't wait for messages to be committed).
+
+### Workflow
+
+Sometimes more than one job or processing stage is needed to accomplish 
something. This is the case where you wish to re-partition a stream, for 
example. MUPD8 has a custom workflow system setup to define how to execute 
multiple jobs at once, and how to feed stream data from one into the other.
+
+Samza makes the individual jobs the level of granularity of execution. Jobs 
communicate via named input and output streams. This implicitly defines a data 
flow graph between all running jobs. We chose this model to enable data flow 
graphs with processing stages owned by different engineers on different teams, 
working in different code bases, without the need to wire everything together 
into a single topology.
+
+This was motivated by our experience with Hadoop, where the data flow between 
jobs is implicitly defined by their input and output directories. This 
decentralized model has proven itself to scale well to a large organization.
+
+### Memory
+
+MUPD8 executes all of its map/update processors inside a single JVM, using 
threads. This is memory-efficient, as the JVM memory overhead is shared across 
the threads.
+
+Samza uses a separate JVM for each [stream processor 
container](../container/samza-container.html). This has the disadvantage of 
using more memory compared to running multiple stream processing threads within 
a single JVM. However, the advantage is improved isolation between tasks, which 
can make them more reliable.
+
+### Isolation
+
+MUPD8 provides no resource isolation between stream processors. A single badly 
behaved stream processor can bring down all processors on the node.
+
+Samza uses process level isolation between stream processor tasks, similarly 
to Hadoop's approach. We can enforce strict per-process memory limits. In 
addition, Samza supports CPU limits when used with YARN cgroups. As the YARN 
support for cgroups develops further, it should also become possible to support 
disk and network cgroup limits.
+
+### Further Reading
+
+The MUPD8 team has published a very good 
[paper](http://vldb.org/pvldb/vol5/p1814_wanglam_vldb2012.pdf) on the design of 
their system.
+
+## [Storm &raquo;](storm.html)

Reply via email to