---
layout: page
title: Documentation
---
<!--
   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.
-->

<h4>Introduction</h4>

<ul class="documentation-list">
  <li><a href="introduction/background.html">Background</a></li>
  <li><a href="introduction/concepts.html">Concepts</a></li>
  <li><a href="introduction/architecture.html">Architecture</a></li>
</ul>

<h4>Comparisons</h4>

<ul class="documentation-list">
  <li><a href="comparisons/introduction.html">Introduction</a></li>
  <li><a href="comparisons/mupd8.html">MUPD8</a></li>
  <li><a href="comparisons/storm.html">Storm</a></li>
  <li><a href="comparisons/spark-streaming.html">Spark Streaming</a></li>
<!-- TODO comparisons pages
  <li><a href="comparisons/aurora.html">Aurora</a></li>
  <li><a href="comparisons/jms.html">JMS</a></li>
  <li><a href="comparisons/s4.html">S4</a></li>
-->
</ul>

<h4>API</h4>

<ul class="documentation-list">
  <li><a href="api/overview.html">Overview</a></li>
  <li><a href="jobs/configuration-table.html">Configuration</a></li>
  <li><a href="api/javadocs">Javadocs</a></li>
</ul>

<h4>Container</h4>

<ul class="documentation-list">
  <li><a href="container/samza-container.html">SamzaContainer</a></li>
  <li><a href="container/streams.html">Streams</a></li>
  <li><a href="container/serialization.html">Serialization</a></li>
  <li><a href="container/checkpointing.html">Checkpointing</a></li>
  <li><a href="container/state-management.html">State Management</a></li>
  <li><a href="container/metrics.html">Metrics</a></li>
  <li><a href="container/windowing.html">Windowing</a></li>
  <li><a href="container/event-loop.html">Event Loop</a></li>
  <li><a href="container/jmx.html">JMX</a></li>
</ul>

<h4>Jobs</h4>

<ul class="documentation-list">
  <li><a href="jobs/job-runner.html">JobRunner</a></li>
  <li><a href="jobs/configuration.html">Configuration</a></li>
  <li><a href="jobs/packaging.html">Packaging</a></li>
  <li><a href="jobs/yarn-jobs.html">YARN Jobs</a></li>
  <li><a href="jobs/logging.html">Logging</a></li>
  <li><a href="jobs/reprocessing.html">Reprocessing</a></li>
</ul>

<h4>YARN</h4>

<ul class="documentation-list">
  <li><a href="yarn/application-master.html">Application Master</a></li>
  <li><a href="yarn/isolation.html">Isolation</a></li>
<!-- TODO write yarn pages
  <li><a href="">Fault Tolerance</a></li>
  <li><a href="">Security</a></li>
-->
</ul>

<h4>Operations</h4>

<ul class="documentation-list">
  <li><a href="operations/security.html">Security</a></li>
  <li><a href="operations/kafka.html">Kafka</a></li>
</div>
