You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@samza.apache.org by xi...@apache.org on 2016/10/19 17:21:45 UTC

svn commit: r1765686 [39/42] - in /samza/site: ./ archive/ community/ contribute/ img/0.11/ img/0.11/learn/ img/0.11/learn/documentation/ img/0.11/learn/documentation/comparisons/ img/0.11/learn/documentation/container/ img/0.11/learn/documentation/int...

Added: samza/site/learn/documentation/0.11/rest/monitors.html
URL: http://svn.apache.org/viewvc/samza/site/learn/documentation/0.11/rest/monitors.html?rev=1765686&view=auto
==============================================================================
--- samza/site/learn/documentation/0.11/rest/monitors.html (added)
+++ samza/site/learn/documentation/0.11/rest/monitors.html Wed Oct 19 17:21:41 2016
@@ -0,0 +1,266 @@
+<!DOCTYPE html>
+<!--
+   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.
+-->
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <title>Samza - Monitors</title>
+    <link href='/css/ropa-sans.css' rel='stylesheet' type='text/css'/>
+    <link href="/css/bootstrap.min.css" rel="stylesheet"/>
+    <link href="/css/font-awesome.min.css" rel="stylesheet"/>
+    <link href="/css/main.css" rel="stylesheet"/>
+    <link href="/css/syntax.css" rel="stylesheet"/>
+    <link rel="icon" type="image/png" href="/img/samza-icon.png">
+    <script src="/js/jquery-1.11.1.min.js"></script>
+  </head>
+  <body>
+    <div class="wrapper">
+      <div class="wrapper-content">
+
+        <div class="masthead">
+          <div class="container">
+            <div class="masthead-logo">
+              <a href="/" class="logo">samza</a>
+            </div>
+            <div class="masthead-icons">
+              <div class="pull-right">
+                <a href="/startup/download"><i class="fa fa-arrow-circle-o-down masthead-icon"></i></a>
+                <a href="https://git-wip-us.apache.org/repos/asf?p=samza.git;a=tree" target="_blank"><i class="fa fa-code masthead-icon" style="font-weight: bold;"></i></a>
+                <a href="https://twitter.com/samzastream" target="_blank"><i class="fa fa-twitter masthead-icon"></i></a>
+                <!-- this icon only shows in versioned pages -->
+                
+                  
+                    
+                  
+                  <a href="http://samza.apache.org/learn/documentation/latest/rest/monitors.html"><i id="switch-version-button"></i></a>
+                   <!-- links for the navigation bar -->
+                
+
+              </div>
+            </div>
+          </div><!-- /.container -->
+        </div>
+
+        <div class="container">
+          <div class="menu">
+            <h1><i class="fa fa-rocket"></i> Getting Started</h1>
+            <ul>
+              <li><a href="/startup/hello-samza/0.11">Hello Samza</a></li>
+              <li><a href="/startup/download">Download</a></li>
+            </ul>
+
+            <h1><i class="fa fa-book"></i> Learn</h1>
+            <ul>
+              <li><a href="/learn/documentation/0.11">Documentation</a></li>
+              <li><a href="/learn/documentation/0.11/jobs/configuration-table.html">Configuration</a></li>
+              <li><a href="/learn/documentation/0.11/container/metrics-table.html">Metrics</a></li>
+              <li><a href="/learn/documentation/0.11/api/javadocs/">Javadocs</a></li>
+              <li><a href="/learn/tutorials/0.11">Tutorials</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/FAQ">FAQ</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/Apache+Samza">Wiki</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=51812876">Papers &amp; Talks</a></li>
+              <li><a href="http://blogs.apache.org/samza">Blog</a></li>
+            </ul>
+
+            <h1><i class="fa fa-comments"></i> Community</h1>
+            <ul>
+              <li><a href="/community/mailing-lists.html">Mailing Lists</a></li>
+              <li><a href="/community/irc.html">IRC</a></li>
+              <li><a href="https://issues.apache.org/jira/browse/SAMZA">Bugs</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/Powered+By">Powered by</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/Ecosystem">Ecosystem</a></li>
+              <li><a href="/community/committers.html">Committers</a></li>
+            </ul>
+
+            <h1><i class="fa fa-code"></i> Contribute</h1>
+            <ul>
+              <li><a href="/contribute/rules.html">Rules</a></li>
+              <li><a href="/contribute/coding-guide.html">Coding Guide</a></li>
+              <li><a href="/contribute/projects.html">Projects</a></li>
+              <li><a href="/contribute/design-documents.html">Design Documents</a></li>
+              <li><a href="/contribute/code.html">Code</a></li>
+              <li><a href="https://reviews.apache.org/groups/samza">Review Board</a></li>
+              <li><a href="/contribute/tests.html">Tests</a></li>
+            </ul>
+
+            <h1><i class="fa fa-history"></i> Archive</h1>
+            <ul>
+              <li><a href="/archive/index.html#latest">latest</a></li>
+              <li><a href="/archive/index.html#10">0.10</a></li>
+              <li><a href="/archive/index.html#09">0.9</a></li>
+              <li><a href="/archive/index.html#08">0.8</a></li>
+              <li><a href="/archive/index.html#07">0.7</a></li>
+            </ul>
+          </div>
+
+          <div class="content">
+            <!--
+   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.
+-->
+
+<h2>Monitors</h2>
+
+<!--
+   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.
+-->
+
+<p>Samza REST supports the ability to add Monitors to the service. Monitors are essentially tasks that can be scheduled to run periodically.
+It provides the capability to the users to define configurations that are specific to individual Monitors.
+These configurations are injected into the monitor instances through the Config instances.</p>
+
+<h2 id="monitor-configuration">Monitor configuration</h2>
+
+<p>All of the configuration keys for the monitors should be prefixed with monitor.{monitorName}.
+Since each monitor is expected to have an unique name, these prefixes provide the namespacing across
+the monitor configurations.</p>
+
+<p>The following configurations are required for each of the monitors.
+  <table class="table table-condensed table-bordered table-striped">
+        <thead>
+          <tr>
+            <th>Name</th>
+            <th>Default</th>
+            <th>Description</th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+            <td>monitor.monitorName.scheduling.interval.ms</td>
+            <td></td>
+            <td>This defines the periodic scheduling interval in milliseconds
+            for a monitor named monitorName. If this configuration is
+            not defined, it is defaulted to 60 seconds.</td>
+          </tr>
+          <tr>
+            <td>monitor.monitorName.factory.class</td>
+            <td></td>
+            <td>
+            <b>Required:</b> This should contain a fully qualified name
+            of a class that implements the MonitorFactory interface.
+            Monitors that are instantiated by the factory implementation will be scheduled for periodic execution.
+            Custom implementations of the MonitorFactory interface are expected to inject the Config
+            and MetricsRegistry instances available in the createMonitor method into the Monitors.
+            </td>
+          </tr>
+          </tr>
+        </tbody>
+  </table></p>
+
+<p>For example, configurations for two monitors named NMTaskMonitor and RMTaskMonitor should be defined as follows.</p>
+
+<div class="highlight"><pre><code class="jproperties"><span class="na">monitor.RMTaskMonitor.factory.class</span><span class="o">=</span><span class="s">org.apache.samza.monitor.RMTaskMonitor</span>
+
+  <span class="na">monitor.RMTaskMonitor.scheduling.interval.ms</span><span class="o">=</span><span class="s">1000</span>
+
+  <span class="na">monitor.RMTaskMonitor.custom.config.key1</span><span class="o">=</span><span class="s">configValue1</span>
+
+  <span class="na">monitor.NMTaskMonitor.factory.class</span><span class="o">=</span><span class="s">org.apache.samza.monitor.NMTaskMonitor</span>
+
+  <span class="na">monitor.NMTaskMonitor.scheduling.interval.ms</span><span class="o">=</span><span class="s">2000</span>
+
+  <span class="na">monitor.NMTaskMonitor.custom.config.key2</span><span class="o">=</span><span class="s">configValue2</span></code></pre></div>
+
+<h2 id="implementing-a-new-monitor">Implementing a New Monitor</h2>
+
+<p>Implement the <a href="javadocs/org/apache/samza/monitor/Monitor.html">Monitor</a> interface with some behavior that should be executed periodically. The Monitor is Java code that invokes some method on the SAMZA Rest Service, runs a bash script to restart a failed NodeManager, or cleans old RocksDB sst files left by Host Affinity, for example.</p>
+
+<p>Implement the <a href="javadocs/org/apache/samza/monitor/MonitorFactory.html">MonitorFactory</a> interface,
+which will be used to instantiate your Monitor. Each Monitor implementation should
+have a associated MonitorFactory implementation, which is responsible for instantiating the monitors.</p>
+
+<h2 id="adding-a-new-monitor-to-the-samza-rest-service">Adding a New Monitor to the Samza REST Service</h2>
+
+<p>Add the fully-qualified class name of the MonitorFactory implementation to the <code>monitor.monitorName.factory.class</code> property in the service config.
+Set the config key <code>monitor.monitorName.scheduling.interval.ms</code> to the scheduling interval in milliseconds.</p>
+
+<p>The configuration key <code>monitor.monitorName.scheduling.interval.ms</code> defines the periodic scheduling interval of
+the <code>monitor()</code> method in milli seconds.</p>
+
+<h2 id="resource-reference-&raquo;"><a href="resource-directory.html">Resource Reference &raquo;</a></h2>
+
+
+          </div>
+        </div>
+
+      </div><!-- /.wrapper-content -->
+    </div><!-- /.wrapper -->
+
+    <div class="footer">
+      <div class="container">
+        <!-- nothing for now. -->
+      </div>
+    </div>
+
+  
+    <script>
+      $( document ).ready(function() {
+        if ( $.fn.urlExists( "/learn/documentation/latest/rest/monitors.html" ) ) {
+          $("#switch-version-button").addClass("fa fa-history masthead-icon");
+        }
+      });
+
+      /* a function to test whether the url exists or not */
+      (function( $ ) {
+        $.fn.urlExists = function(url) {
+          var http = new XMLHttpRequest();
+          http.open('HEAD', url, false);
+          http.send();
+          return http.status != 404;
+        };
+      }( jQuery ));
+    </script>
+  
+
+    <!-- Google Analytics -->
+    <script>
+      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+      ga('create', 'UA-43122768-1', 'apache.org');
+      ga('send', 'pageview');
+
+    </script>
+  </body>
+</html>

Added: samza/site/learn/documentation/0.11/rest/overview.html
URL: http://svn.apache.org/viewvc/samza/site/learn/documentation/0.11/rest/overview.html?rev=1765686&view=auto
==============================================================================
--- samza/site/learn/documentation/0.11/rest/overview.html (added)
+++ samza/site/learn/documentation/0.11/rest/overview.html Wed Oct 19 17:21:41 2016
@@ -0,0 +1,259 @@
+<!DOCTYPE html>
+<!--
+   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.
+-->
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <title>Samza - Overview</title>
+    <link href='/css/ropa-sans.css' rel='stylesheet' type='text/css'/>
+    <link href="/css/bootstrap.min.css" rel="stylesheet"/>
+    <link href="/css/font-awesome.min.css" rel="stylesheet"/>
+    <link href="/css/main.css" rel="stylesheet"/>
+    <link href="/css/syntax.css" rel="stylesheet"/>
+    <link rel="icon" type="image/png" href="/img/samza-icon.png">
+    <script src="/js/jquery-1.11.1.min.js"></script>
+  </head>
+  <body>
+    <div class="wrapper">
+      <div class="wrapper-content">
+
+        <div class="masthead">
+          <div class="container">
+            <div class="masthead-logo">
+              <a href="/" class="logo">samza</a>
+            </div>
+            <div class="masthead-icons">
+              <div class="pull-right">
+                <a href="/startup/download"><i class="fa fa-arrow-circle-o-down masthead-icon"></i></a>
+                <a href="https://git-wip-us.apache.org/repos/asf?p=samza.git;a=tree" target="_blank"><i class="fa fa-code masthead-icon" style="font-weight: bold;"></i></a>
+                <a href="https://twitter.com/samzastream" target="_blank"><i class="fa fa-twitter masthead-icon"></i></a>
+                <!-- this icon only shows in versioned pages -->
+                
+                  
+                    
+                  
+                  <a href="http://samza.apache.org/learn/documentation/latest/rest/overview.html"><i id="switch-version-button"></i></a>
+                   <!-- links for the navigation bar -->
+                
+
+              </div>
+            </div>
+          </div><!-- /.container -->
+        </div>
+
+        <div class="container">
+          <div class="menu">
+            <h1><i class="fa fa-rocket"></i> Getting Started</h1>
+            <ul>
+              <li><a href="/startup/hello-samza/0.11">Hello Samza</a></li>
+              <li><a href="/startup/download">Download</a></li>
+            </ul>
+
+            <h1><i class="fa fa-book"></i> Learn</h1>
+            <ul>
+              <li><a href="/learn/documentation/0.11">Documentation</a></li>
+              <li><a href="/learn/documentation/0.11/jobs/configuration-table.html">Configuration</a></li>
+              <li><a href="/learn/documentation/0.11/container/metrics-table.html">Metrics</a></li>
+              <li><a href="/learn/documentation/0.11/api/javadocs/">Javadocs</a></li>
+              <li><a href="/learn/tutorials/0.11">Tutorials</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/FAQ">FAQ</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/Apache+Samza">Wiki</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=51812876">Papers &amp; Talks</a></li>
+              <li><a href="http://blogs.apache.org/samza">Blog</a></li>
+            </ul>
+
+            <h1><i class="fa fa-comments"></i> Community</h1>
+            <ul>
+              <li><a href="/community/mailing-lists.html">Mailing Lists</a></li>
+              <li><a href="/community/irc.html">IRC</a></li>
+              <li><a href="https://issues.apache.org/jira/browse/SAMZA">Bugs</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/Powered+By">Powered by</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/Ecosystem">Ecosystem</a></li>
+              <li><a href="/community/committers.html">Committers</a></li>
+            </ul>
+
+            <h1><i class="fa fa-code"></i> Contribute</h1>
+            <ul>
+              <li><a href="/contribute/rules.html">Rules</a></li>
+              <li><a href="/contribute/coding-guide.html">Coding Guide</a></li>
+              <li><a href="/contribute/projects.html">Projects</a></li>
+              <li><a href="/contribute/design-documents.html">Design Documents</a></li>
+              <li><a href="/contribute/code.html">Code</a></li>
+              <li><a href="https://reviews.apache.org/groups/samza">Review Board</a></li>
+              <li><a href="/contribute/tests.html">Tests</a></li>
+            </ul>
+
+            <h1><i class="fa fa-history"></i> Archive</h1>
+            <ul>
+              <li><a href="/archive/index.html#latest">latest</a></li>
+              <li><a href="/archive/index.html#10">0.10</a></li>
+              <li><a href="/archive/index.html#09">0.9</a></li>
+              <li><a href="/archive/index.html#08">0.8</a></li>
+              <li><a href="/archive/index.html#07">0.7</a></li>
+            </ul>
+          </div>
+
+          <div class="content">
+            <!--
+   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.
+-->
+
+<h2>Overview</h2>
+
+<!--
+   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.
+-->
+
+<p>Samza provides a REST service that is deployable on any node in the cluster and has pluggable interfaces to add custom <a href="resources.html">Resources</a> and <a href="monitors.html">Monitors</a>. It is intended to be a node-local delegate for common actions such as starting jobs, sampling the local state, measuring disk usage, taking heap dumps, verifying liveness, and so on.</p>
+
+<p>The Samza REST Service does not yet have SSL enabled or authentication, so it is initially geared for more backend and operations use cases. It would not be wise to expose it as a user-facing API in environments where users are not allowed to stop each other&rsquo;s jobs, for example.</p>
+
+<p>Samza REST is packaged and configured very similarly to Samza jobs. A notable difference is Samza REST must be deployed and executed on each host you want it to run on, whereas a Samza Job is typically started on a master node in the cluster manager and the master deploys the job to the other nodes.</p>
+
+<h3 id="deployment">Deployment</h3>
+
+<p>Samza REST is intended to be a proxy for all operations which need to be executed from the nodes of the Samza cluster. It can be deployed to all the hosts in the cluster and may serve different purposes on different hosts. In such cases it may be useful to deploy the same release tarball with different configs to customize the functionality for the role of the hosts. For example, Samza REST may be deployed on a YARN cluster with one config for the ResourceManager (RM) hosts and another config for the NodeManager (NM) hosts.</p>
+
+<p>Deploying the service is very similar to running a Samza job. First build the tarball using:</p>
+
+<div class="highlight"><pre><code class="bash">./gradlew samza-rest:clean releaseRestServiceTar</code></pre></div>
+
+<p>Then from the extracted location, run the service using:</p>
+
+<div class="highlight"><pre><code class="bash">samza-example/target/bin/run-samza-rest-service.sh  <span class="se">\</span>
+  --config-factory<span class="o">=</span>org.apache.samza.config.factories.PropertiesConfigFactory <span class="se">\</span>
+  --config-path<span class="o">=</span>file://<span class="nv">$PWD</span>/config/samza-rest.properties</code></pre></div>
+
+<p>The two config parameters have the same purpose as they do for <a href="../jobs/job-runner.html">run-job.sh</a>.</p>
+
+<p>Follow the <a href="../../../tutorials/0.11/samza-rest-getting-started.html">getting started tutorial</a> to quickly deploy and test the Samza REST Service for the first time.</p>
+
+<h3 id="configuration">Configuration</h3>
+
+<p>The Samza REST Service relies on the same configuration system as Samza Jobs. However, the Samza REST Service config file itself is completely separate and unrelated to the config files for your Samza jobs.</p>
+
+<p>The configuration may provide values for the core configs as well as any additional configs needed for Resources or Monitors that you may have added to the service.  A basic configuration file which includes configs for the core service as well as the <a href="resources/jobs.html#configuration">JobsResource</a> looks like this:</p>
+
+<div class="highlight"><pre><code class="jproperties"><span class="c"># Service port. Set to 0 for a dynamic port.</span>
+<span class="na">services.rest.port</span><span class="o">=</span><span class="s">9139</span>
+
+<span class="c"># JobProxy</span>
+<span class="na">job.proxy.factory.class</span><span class="o">=</span><span class="s">org.apache.samza.rest.proxy.job.SimpleYarnJobProxyFactory</span>
+<span class="c"># Installation path for hello-samza project. Your root may vary.</span>
+<span class="na">job.installations.path</span><span class="o">=</span><span class="s">/hello-samza-ROOT/deploy/samza</span></code></pre></div>
+
+<h6 id="core-configuration">Core Configuration</h6>
+
+<table class="table table-condensed table-bordered table-striped">
+  <thead>
+    <tr>
+      <th>Name</th>
+      <th>Default</th>
+      <th>Description</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>services.rest.port</td><td></td><td><b>Required:</b> The port to use on the local host for the Samza REST Service. If 0, an available port will be dynamically chosen.</td>
+    </tr>
+    <tr>
+      <td>rest.resource.factory.classes</td><td></td><td>A comma-delimited list of class names that implement ResourceFactory. These factories will be used to create specific instances of resources and can pull whatever properties they need from the provided server config. The instance returned will be used for the lifetime of the server. If no value is provided for this property or <pre>rest.resource.classes</pre> then <pre>org.apache.samza.rest.resources.DefaultResourceFactory</pre> will be used as a default.</td>
+    </tr>
+    <tr>
+      <td>rest.resource.classes</td><td></td><td>A comma-delimited list of class names of resources to register with the server. These classes can be instantiated as often as each request, the life cycle is not guaranteed to match the server. Also, the instances do not receive any config. Note that the lifecycle and ability to receive config are the primary differences between resources added via this property versus rest.resource.factory.classes</td>
+    </tr>
+  </tbody>
+</table>
+
+<h3 id="logging">Logging</h3>
+
+<p>Samza REST uses SLF4J for logging. The <code>run-samza-rest-service.sh</code> script mentioned above by default expects a log4j.xml in the package&rsquo;s bin directory and writes the logs to a logs directory in the package root. However, since the script invokes the same <code>run-class.sh</code> script used to run Samza jobs, it can be reconfigured very similarly to <a href="../jobs/logging.html">logging for Samza jobs</a>.</p>
+
+<h2 id="resources-&raquo;"><a href="resources.html">Resources &raquo;</a></h2>
+
+
+          </div>
+        </div>
+
+      </div><!-- /.wrapper-content -->
+    </div><!-- /.wrapper -->
+
+    <div class="footer">
+      <div class="container">
+        <!-- nothing for now. -->
+      </div>
+    </div>
+
+  
+    <script>
+      $( document ).ready(function() {
+        if ( $.fn.urlExists( "/learn/documentation/latest/rest/overview.html" ) ) {
+          $("#switch-version-button").addClass("fa fa-history masthead-icon");
+        }
+      });
+
+      /* a function to test whether the url exists or not */
+      (function( $ ) {
+        $.fn.urlExists = function(url) {
+          var http = new XMLHttpRequest();
+          http.open('HEAD', url, false);
+          http.send();
+          return http.status != 404;
+        };
+      }( jQuery ));
+    </script>
+  
+
+    <!-- Google Analytics -->
+    <script>
+      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+      ga('create', 'UA-43122768-1', 'apache.org');
+      ga('send', 'pageview');
+
+    </script>
+  </body>
+</html>

Added: samza/site/learn/documentation/0.11/rest/resource-directory.html
URL: http://svn.apache.org/viewvc/samza/site/learn/documentation/0.11/rest/resource-directory.html?rev=1765686&view=auto
==============================================================================
--- samza/site/learn/documentation/0.11/rest/resource-directory.html (added)
+++ samza/site/learn/documentation/0.11/rest/resource-directory.html Wed Oct 19 17:21:41 2016
@@ -0,0 +1,201 @@
+<!DOCTYPE html>
+<!--
+   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.
+-->
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <title>Samza - Resource Directory</title>
+    <link href='/css/ropa-sans.css' rel='stylesheet' type='text/css'/>
+    <link href="/css/bootstrap.min.css" rel="stylesheet"/>
+    <link href="/css/font-awesome.min.css" rel="stylesheet"/>
+    <link href="/css/main.css" rel="stylesheet"/>
+    <link href="/css/syntax.css" rel="stylesheet"/>
+    <link rel="icon" type="image/png" href="/img/samza-icon.png">
+    <script src="/js/jquery-1.11.1.min.js"></script>
+  </head>
+  <body>
+    <div class="wrapper">
+      <div class="wrapper-content">
+
+        <div class="masthead">
+          <div class="container">
+            <div class="masthead-logo">
+              <a href="/" class="logo">samza</a>
+            </div>
+            <div class="masthead-icons">
+              <div class="pull-right">
+                <a href="/startup/download"><i class="fa fa-arrow-circle-o-down masthead-icon"></i></a>
+                <a href="https://git-wip-us.apache.org/repos/asf?p=samza.git;a=tree" target="_blank"><i class="fa fa-code masthead-icon" style="font-weight: bold;"></i></a>
+                <a href="https://twitter.com/samzastream" target="_blank"><i class="fa fa-twitter masthead-icon"></i></a>
+                <!-- this icon only shows in versioned pages -->
+                
+                  
+                    
+                  
+                  <a href="http://samza.apache.org/learn/documentation/latest/rest/resource-directory.html"><i id="switch-version-button"></i></a>
+                   <!-- links for the navigation bar -->
+                
+
+              </div>
+            </div>
+          </div><!-- /.container -->
+        </div>
+
+        <div class="container">
+          <div class="menu">
+            <h1><i class="fa fa-rocket"></i> Getting Started</h1>
+            <ul>
+              <li><a href="/startup/hello-samza/0.11">Hello Samza</a></li>
+              <li><a href="/startup/download">Download</a></li>
+            </ul>
+
+            <h1><i class="fa fa-book"></i> Learn</h1>
+            <ul>
+              <li><a href="/learn/documentation/0.11">Documentation</a></li>
+              <li><a href="/learn/documentation/0.11/jobs/configuration-table.html">Configuration</a></li>
+              <li><a href="/learn/documentation/0.11/container/metrics-table.html">Metrics</a></li>
+              <li><a href="/learn/documentation/0.11/api/javadocs/">Javadocs</a></li>
+              <li><a href="/learn/tutorials/0.11">Tutorials</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/FAQ">FAQ</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/Apache+Samza">Wiki</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=51812876">Papers &amp; Talks</a></li>
+              <li><a href="http://blogs.apache.org/samza">Blog</a></li>
+            </ul>
+
+            <h1><i class="fa fa-comments"></i> Community</h1>
+            <ul>
+              <li><a href="/community/mailing-lists.html">Mailing Lists</a></li>
+              <li><a href="/community/irc.html">IRC</a></li>
+              <li><a href="https://issues.apache.org/jira/browse/SAMZA">Bugs</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/Powered+By">Powered by</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/Ecosystem">Ecosystem</a></li>
+              <li><a href="/community/committers.html">Committers</a></li>
+            </ul>
+
+            <h1><i class="fa fa-code"></i> Contribute</h1>
+            <ul>
+              <li><a href="/contribute/rules.html">Rules</a></li>
+              <li><a href="/contribute/coding-guide.html">Coding Guide</a></li>
+              <li><a href="/contribute/projects.html">Projects</a></li>
+              <li><a href="/contribute/design-documents.html">Design Documents</a></li>
+              <li><a href="/contribute/code.html">Code</a></li>
+              <li><a href="https://reviews.apache.org/groups/samza">Review Board</a></li>
+              <li><a href="/contribute/tests.html">Tests</a></li>
+            </ul>
+
+            <h1><i class="fa fa-history"></i> Archive</h1>
+            <ul>
+              <li><a href="/archive/index.html#latest">latest</a></li>
+              <li><a href="/archive/index.html#10">0.10</a></li>
+              <li><a href="/archive/index.html#09">0.9</a></li>
+              <li><a href="/archive/index.html#08">0.8</a></li>
+              <li><a href="/archive/index.html#07">0.7</a></li>
+            </ul>
+          </div>
+
+          <div class="content">
+            <!--
+   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.
+-->
+
+<h2>Resource Directory</h2>
+
+<!--
+   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.
+-->
+
+<p>The Samza REST Service ships with the JAX-RS Resources listed below.</p>
+
+<ul>
+<li><a href="resources/jobs.html">JobsResource</a></li>
+<li>(Second resource coming soon)</li>
+</ul>
+
+<h2 id="jobs-resource-&raquo;"><a href="resources/jobs.html">Jobs Resource &raquo;</a></h2>
+
+
+          </div>
+        </div>
+
+      </div><!-- /.wrapper-content -->
+    </div><!-- /.wrapper -->
+
+    <div class="footer">
+      <div class="container">
+        <!-- nothing for now. -->
+      </div>
+    </div>
+
+  
+    <script>
+      $( document ).ready(function() {
+        if ( $.fn.urlExists( "/learn/documentation/latest/rest/resource-directory.html" ) ) {
+          $("#switch-version-button").addClass("fa fa-history masthead-icon");
+        }
+      });
+
+      /* a function to test whether the url exists or not */
+      (function( $ ) {
+        $.fn.urlExists = function(url) {
+          var http = new XMLHttpRequest();
+          http.open('HEAD', url, false);
+          http.send();
+          return http.status != 404;
+        };
+      }( jQuery ));
+    </script>
+  
+
+    <!-- Google Analytics -->
+    <script>
+      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+      ga('create', 'UA-43122768-1', 'apache.org');
+      ga('send', 'pageview');
+
+    </script>
+  </body>
+</html>

Added: samza/site/learn/documentation/0.11/rest/resources.html
URL: http://svn.apache.org/viewvc/samza/site/learn/documentation/0.11/rest/resources.html?rev=1765686&view=auto
==============================================================================
--- samza/site/learn/documentation/0.11/rest/resources.html (added)
+++ samza/site/learn/documentation/0.11/rest/resources.html Wed Oct 19 17:21:41 2016
@@ -0,0 +1,240 @@
+<!DOCTYPE html>
+<!--
+   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.
+-->
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <title>Samza - Resources</title>
+    <link href='/css/ropa-sans.css' rel='stylesheet' type='text/css'/>
+    <link href="/css/bootstrap.min.css" rel="stylesheet"/>
+    <link href="/css/font-awesome.min.css" rel="stylesheet"/>
+    <link href="/css/main.css" rel="stylesheet"/>
+    <link href="/css/syntax.css" rel="stylesheet"/>
+    <link rel="icon" type="image/png" href="/img/samza-icon.png">
+    <script src="/js/jquery-1.11.1.min.js"></script>
+  </head>
+  <body>
+    <div class="wrapper">
+      <div class="wrapper-content">
+
+        <div class="masthead">
+          <div class="container">
+            <div class="masthead-logo">
+              <a href="/" class="logo">samza</a>
+            </div>
+            <div class="masthead-icons">
+              <div class="pull-right">
+                <a href="/startup/download"><i class="fa fa-arrow-circle-o-down masthead-icon"></i></a>
+                <a href="https://git-wip-us.apache.org/repos/asf?p=samza.git;a=tree" target="_blank"><i class="fa fa-code masthead-icon" style="font-weight: bold;"></i></a>
+                <a href="https://twitter.com/samzastream" target="_blank"><i class="fa fa-twitter masthead-icon"></i></a>
+                <!-- this icon only shows in versioned pages -->
+                
+                  
+                    
+                  
+                  <a href="http://samza.apache.org/learn/documentation/latest/rest/resources.html"><i id="switch-version-button"></i></a>
+                   <!-- links for the navigation bar -->
+                
+
+              </div>
+            </div>
+          </div><!-- /.container -->
+        </div>
+
+        <div class="container">
+          <div class="menu">
+            <h1><i class="fa fa-rocket"></i> Getting Started</h1>
+            <ul>
+              <li><a href="/startup/hello-samza/0.11">Hello Samza</a></li>
+              <li><a href="/startup/download">Download</a></li>
+            </ul>
+
+            <h1><i class="fa fa-book"></i> Learn</h1>
+            <ul>
+              <li><a href="/learn/documentation/0.11">Documentation</a></li>
+              <li><a href="/learn/documentation/0.11/jobs/configuration-table.html">Configuration</a></li>
+              <li><a href="/learn/documentation/0.11/container/metrics-table.html">Metrics</a></li>
+              <li><a href="/learn/documentation/0.11/api/javadocs/">Javadocs</a></li>
+              <li><a href="/learn/tutorials/0.11">Tutorials</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/FAQ">FAQ</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/Apache+Samza">Wiki</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=51812876">Papers &amp; Talks</a></li>
+              <li><a href="http://blogs.apache.org/samza">Blog</a></li>
+            </ul>
+
+            <h1><i class="fa fa-comments"></i> Community</h1>
+            <ul>
+              <li><a href="/community/mailing-lists.html">Mailing Lists</a></li>
+              <li><a href="/community/irc.html">IRC</a></li>
+              <li><a href="https://issues.apache.org/jira/browse/SAMZA">Bugs</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/Powered+By">Powered by</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/Ecosystem">Ecosystem</a></li>
+              <li><a href="/community/committers.html">Committers</a></li>
+            </ul>
+
+            <h1><i class="fa fa-code"></i> Contribute</h1>
+            <ul>
+              <li><a href="/contribute/rules.html">Rules</a></li>
+              <li><a href="/contribute/coding-guide.html">Coding Guide</a></li>
+              <li><a href="/contribute/projects.html">Projects</a></li>
+              <li><a href="/contribute/design-documents.html">Design Documents</a></li>
+              <li><a href="/contribute/code.html">Code</a></li>
+              <li><a href="https://reviews.apache.org/groups/samza">Review Board</a></li>
+              <li><a href="/contribute/tests.html">Tests</a></li>
+            </ul>
+
+            <h1><i class="fa fa-history"></i> Archive</h1>
+            <ul>
+              <li><a href="/archive/index.html#latest">latest</a></li>
+              <li><a href="/archive/index.html#10">0.10</a></li>
+              <li><a href="/archive/index.html#09">0.9</a></li>
+              <li><a href="/archive/index.html#08">0.8</a></li>
+              <li><a href="/archive/index.html#07">0.7</a></li>
+            </ul>
+          </div>
+
+          <div class="content">
+            <!--
+   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.
+-->
+
+<h2>Resources</h2>
+
+<!--
+   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.
+-->
+
+<p>Samza REST can expose any JAX-RS Resource. By default, it ships with a <a href="./resources/jobs.html">JobsResource</a> which is discussed below. You can implement your own Resources and specify them in the config.</p>
+
+<h2 id="implementing-a-new-resource">Implementing a New Resource</h2>
+
+<p>Samza REST uses the <a href="https://jersey.java.net/">Jersey</a> implementation of the <a href="https://jax-rs-spec.java.net/">JAX-RS specification</a>. The Jersey documentation and examples are helpful for creating a new Resource.</p>
+
+<p>In addition, Samza REST imposes the following conventions, which should be followed for all Resources.</p>
+
+<h3 id="versioned-paths">Versioned Paths</h3>
+
+<p>By convention, all resources prefix their path with a version number to enable supporting legacy APIs in the future. For example, the base URL for the JobsResource is</p>
+<div class="highlight"><pre><code class="language-text" data-lang="text">/v1/jobs
+</code></pre></div>
+<p>If a future version of JobsResource implements a different API, it will use a different version number in the base path.</p>
+<div class="highlight"><pre><code class="language-text" data-lang="text">/v2/jobs
+</code></pre></div>
+<p>All resources should be exposed on the latest version so clients can use a common version base for all requests.</p>
+
+<h3 id="error-messages">Error Messages</h3>
+
+<p>Every error response will include a JSON message body containing a single <code>message</code> field describing the problem. For example:</p>
+<div class="highlight"><pre><code class="language-text" data-lang="text">{
+    &quot;message&quot;: &quot;Unrecognized status: null&quot;
+}
+</code></pre></div>
+<h3 id="configuration">Configuration</h3>
+
+<p>There are a few extra steps for Resources that require configuration values.</p>
+
+<ol>
+<li>Implement a configuration class that extends <a href="../api/javadocs/org/apache/samza/config/MapConfig.html">MapConfig</a> with all the constants and accessors for the Resource&rsquo;s configs. The <a href="javadocs/org/apache/samza/rest/SamzaRestConfig.html">SamzaRestConfig</a> should not be cluttered with Resource configs. See the <a href="javadocs/org/apache/samza/rest/resources/JobsResourceConfig.html">JobsResourceConfig</a> for an example.</li>
+<li>Implement or extend a <a href="javadocs/org/apache/samza/rest/resources/ResourceFactory.html">ResourceFactory</a> which will use the global Samza REST config file to instantiate the MapConfig implementation from step 1 and use it to construct the Resource that requires the config. See the <a href="javadocs/org/apache/samza/rest/resources/DefaultResourceFactory.html">DefaultResourceFactory</a> for an example.</li>
+<li>Add all the necessary resource properties to the Samza REST config file. The <a href="javadocs/org/apache/samza/rest/SamzaRestApplication.html">SamzaRestApplication</a> passes the global config into the configured ResourceFactories to instantiate the Resources with configs.</li>
+</ol>
+
+<h2 id="adding-a-new-resource-to-the-samza-rest-service">Adding a New Resource to the Samza REST Service</h2>
+
+<p>Resources are added to the Samza REST Service via config. There are two ways to add a new Resource depending on whether the Resource requires properties from the config file or not. In the former case, the Resource is instantiated once with the config and the instance is registered with the SamzaRestApplication. In the latter case, the Resource <em>class</em> is registered and it can be instantiated many times over the lifecycle of the application.</p>
+
+<ul>
+<li><p>To add a configured Resource add the fully-qualified class name of the ResourceFactory implementation that instantiates the Resource to the <code>rest.resource.factory.classes</code> property in the service config.</p></li>
+<li><p>To add a config-less Resource, add the fully-qualified class name of the Resource implementation to the <code>rest.resource.classes</code> property in the service config.</p></li>
+</ul>
+
+<p>For more information on these config properties, see the config table in the <a href="overview.html#configuration">Overview page.</a></p>
+
+<h2 id="monitors-&raquo;"><a href="monitors.html">Monitors &raquo;</a></h2>
+
+
+          </div>
+        </div>
+
+      </div><!-- /.wrapper-content -->
+    </div><!-- /.wrapper -->
+
+    <div class="footer">
+      <div class="container">
+        <!-- nothing for now. -->
+      </div>
+    </div>
+
+  
+    <script>
+      $( document ).ready(function() {
+        if ( $.fn.urlExists( "/learn/documentation/latest/rest/resources.html" ) ) {
+          $("#switch-version-button").addClass("fa fa-history masthead-icon");
+        }
+      });
+
+      /* a function to test whether the url exists or not */
+      (function( $ ) {
+        $.fn.urlExists = function(url) {
+          var http = new XMLHttpRequest();
+          http.open('HEAD', url, false);
+          http.send();
+          return http.status != 404;
+        };
+      }( jQuery ));
+    </script>
+  
+
+    <!-- Google Analytics -->
+    <script>
+      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+      ga('create', 'UA-43122768-1', 'apache.org');
+      ga('send', 'pageview');
+
+    </script>
+  </body>
+</html>

Added: samza/site/learn/documentation/0.11/rest/resources/jobs.html
URL: http://svn.apache.org/viewvc/samza/site/learn/documentation/0.11/rest/resources/jobs.html?rev=1765686&view=auto
==============================================================================
--- samza/site/learn/documentation/0.11/rest/resources/jobs.html (added)
+++ samza/site/learn/documentation/0.11/rest/resources/jobs.html Wed Oct 19 17:21:41 2016
@@ -0,0 +1,513 @@
+<!DOCTYPE html>
+<!--
+   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.
+-->
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <title>Samza - Jobs Resource</title>
+    <link href='/css/ropa-sans.css' rel='stylesheet' type='text/css'/>
+    <link href="/css/bootstrap.min.css" rel="stylesheet"/>
+    <link href="/css/font-awesome.min.css" rel="stylesheet"/>
+    <link href="/css/main.css" rel="stylesheet"/>
+    <link href="/css/syntax.css" rel="stylesheet"/>
+    <link rel="icon" type="image/png" href="/img/samza-icon.png">
+    <script src="/js/jquery-1.11.1.min.js"></script>
+  </head>
+  <body>
+    <div class="wrapper">
+      <div class="wrapper-content">
+
+        <div class="masthead">
+          <div class="container">
+            <div class="masthead-logo">
+              <a href="/" class="logo">samza</a>
+            </div>
+            <div class="masthead-icons">
+              <div class="pull-right">
+                <a href="/startup/download"><i class="fa fa-arrow-circle-o-down masthead-icon"></i></a>
+                <a href="https://git-wip-us.apache.org/repos/asf?p=samza.git;a=tree" target="_blank"><i class="fa fa-code masthead-icon" style="font-weight: bold;"></i></a>
+                <a href="https://twitter.com/samzastream" target="_blank"><i class="fa fa-twitter masthead-icon"></i></a>
+                <!-- this icon only shows in versioned pages -->
+                
+                  
+                    
+                  
+                  <a href="http://samza.apache.org/learn/documentation/latest/rest/resources/jobs.html"><i id="switch-version-button"></i></a>
+                   <!-- links for the navigation bar -->
+                
+
+              </div>
+            </div>
+          </div><!-- /.container -->
+        </div>
+
+        <div class="container">
+          <div class="menu">
+            <h1><i class="fa fa-rocket"></i> Getting Started</h1>
+            <ul>
+              <li><a href="/startup/hello-samza/0.11">Hello Samza</a></li>
+              <li><a href="/startup/download">Download</a></li>
+            </ul>
+
+            <h1><i class="fa fa-book"></i> Learn</h1>
+            <ul>
+              <li><a href="/learn/documentation/0.11">Documentation</a></li>
+              <li><a href="/learn/documentation/0.11/jobs/configuration-table.html">Configuration</a></li>
+              <li><a href="/learn/documentation/0.11/container/metrics-table.html">Metrics</a></li>
+              <li><a href="/learn/documentation/0.11/api/javadocs/">Javadocs</a></li>
+              <li><a href="/learn/tutorials/0.11">Tutorials</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/FAQ">FAQ</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/Apache+Samza">Wiki</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=51812876">Papers &amp; Talks</a></li>
+              <li><a href="http://blogs.apache.org/samza">Blog</a></li>
+            </ul>
+
+            <h1><i class="fa fa-comments"></i> Community</h1>
+            <ul>
+              <li><a href="/community/mailing-lists.html">Mailing Lists</a></li>
+              <li><a href="/community/irc.html">IRC</a></li>
+              <li><a href="https://issues.apache.org/jira/browse/SAMZA">Bugs</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/Powered+By">Powered by</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/SAMZA/Ecosystem">Ecosystem</a></li>
+              <li><a href="/community/committers.html">Committers</a></li>
+            </ul>
+
+            <h1><i class="fa fa-code"></i> Contribute</h1>
+            <ul>
+              <li><a href="/contribute/rules.html">Rules</a></li>
+              <li><a href="/contribute/coding-guide.html">Coding Guide</a></li>
+              <li><a href="/contribute/projects.html">Projects</a></li>
+              <li><a href="/contribute/design-documents.html">Design Documents</a></li>
+              <li><a href="/contribute/code.html">Code</a></li>
+              <li><a href="https://reviews.apache.org/groups/samza">Review Board</a></li>
+              <li><a href="/contribute/tests.html">Tests</a></li>
+            </ul>
+
+            <h1><i class="fa fa-history"></i> Archive</h1>
+            <ul>
+              <li><a href="/archive/index.html#latest">latest</a></li>
+              <li><a href="/archive/index.html#10">0.10</a></li>
+              <li><a href="/archive/index.html#09">0.9</a></li>
+              <li><a href="/archive/index.html#08">0.8</a></li>
+              <li><a href="/archive/index.html#07">0.7</a></li>
+            </ul>
+          </div>
+
+          <div class="content">
+            <!--
+   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.
+-->
+
+<h2>Jobs Resource</h2>
+
+<!--
+   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.
+-->
+
+<p>Exposes operations at the job scope (as opposed to the cluster, container, or task scope). The initial implementation includes the ability to list all jobs, get the status of a particular job, and start or stop an individual job.</p>
+
+<h1 id="api">API</h1>
+
+<p>The following sections provide general information about the response structure and detailed descriptions of each of the requests.</p>
+
+<h2 id="response-structure">Response Structure</h2>
+
+<p>All responses will contain either a job status or an error message.</p>
+
+<p><strong>Job Status</strong></p>
+
+<p>Job status will be of the form:</p>
+
+<div class="highlight"><pre><code class="json"><span class="p">{</span>
+    <span class="nt">&quot;status&quot;</span><span class="p">:</span><span class="s2">&quot;STOPPED&quot;</span><span class="p">,</span>
+    <span class="nt">&quot;statusDetail&quot;</span><span class="p">:</span><span class="s2">&quot;KILLED&quot;</span><span class="p">,</span>
+    <span class="nt">&quot;jobName&quot;</span><span class="p">:</span><span class="s2">&quot;wikipedia-parser&quot;</span><span class="p">,</span>
+    <span class="nt">&quot;jobId&quot;</span><span class="p">:</span><span class="s2">&quot;1&quot;</span>
+<span class="p">}</span></code></pre></div>
+
+<p><code>status</code> is the abstract Samza status for the job. Initially it will be one of {STARTING, STARTED, STOPPED, UNKNOWN}.</p>
+
+<p><code>statusDetail</code> is the implementation-specific status for the job. For YARN, it will be one of the values in the YarnApplicationState enum.</p>
+
+<p><strong>Error Message</strong></p>
+
+<p>Every error response have the following structure:</p>
+
+<div class="highlight"><pre><code class="json"><span class="p">{</span>
+    <span class="nt">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Unrecognized status parameter: null&quot;</span>
+<span class="p">}</span></code></pre></div>
+
+<p><code>message</code> is the only field in the response and contains a description of the problem.
+<br/></p>
+
+<h2 id="get-all-jobs">Get All Jobs</h2>
+
+<p>Lists all the jobs installed on the host and provides their status.</p>
+
+<h6 id="request">Request</h6>
+<div class="highlight"><pre><code class="language-text" data-lang="text">GET /v1/jobs
+</code></pre></div>
+<h6 id="response">Response</h6>
+<div class="highlight"><pre><code class="language-text" data-lang="text">Status: 200 OK
+</code></pre></div>
+<div class="highlight"><pre><code class="json"><span class="p">[</span>
+
+    <span class="p">{</span>
+        <span class="nt">&quot;status&quot;</span><span class="p">:</span><span class="s2">&quot;STOPPED&quot;</span><span class="p">,</span>
+        <span class="nt">&quot;statusDetail&quot;</span><span class="p">:</span><span class="s2">&quot;KILLED&quot;</span><span class="p">,</span>
+        <span class="nt">&quot;jobName&quot;</span><span class="p">:</span><span class="s2">&quot;wikipedia-parser&quot;</span><span class="p">,</span>
+        <span class="nt">&quot;jobId&quot;</span><span class="p">:</span><span class="s2">&quot;1&quot;</span>
+    <span class="p">},</span>
+    <span class="p">{</span>
+        <span class="nt">&quot;status&quot;</span><span class="p">:</span><span class="s2">&quot;STARTED&quot;</span><span class="p">,</span>
+        <span class="nt">&quot;statusDetail&quot;</span><span class="p">:</span><span class="s2">&quot;RUNNING&quot;</span><span class="p">,</span>
+        <span class="nt">&quot;jobName&quot;</span><span class="p">:</span><span class="s2">&quot;wikipedia-feed&quot;</span><span class="p">,</span>
+        <span class="nt">&quot;jobId&quot;</span><span class="p">:</span><span class="s2">&quot;1&quot;</span>
+    <span class="p">},</span>
+    <span class="p">{</span>
+        <span class="nt">&quot;status&quot;</span><span class="p">:</span><span class="s2">&quot;STOPPED&quot;</span><span class="p">,</span>
+        <span class="nt">&quot;statusDetail&quot;</span><span class="p">:</span><span class="kc">null</span><span class="p">,</span>
+        <span class="nt">&quot;jobName&quot;</span><span class="p">:</span><span class="s2">&quot;wikipedia-stats&quot;</span><span class="p">,</span>
+        <span class="nt">&quot;jobId&quot;</span><span class="p">:</span><span class="s2">&quot;1&quot;</span>
+    <span class="p">}</span>
+<span class="p">]</span></code></pre></div>
+
+<h6 id="response-codes">Response codes</h6>
+
+<table class="table table-condensed table-bordered table-striped">
+  <thead>
+    <tr>
+      <th>Status</th>
+      <th>Description</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>200 OK</td><td>The operation completed successfully and the current job status for each job is returned.</td>
+    </tr>
+    <tr>
+      <td>500 Server Error</td><td>There was an error executing the command on the server. e.g. The command timed out.
+<div class="highlight"><pre><code class="json"><span class="p">{</span>
+    <span class="nt">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Timeout waiting for job status.&quot;</span>
+<span class="p">}</span></code></pre></div>
+</td>
+    </tr>
+  </tbody>
+</table>
+
+<p><br/></p>
+
+<h2 id="get-job">Get Job</h2>
+
+<p>Gets the status of the specified job.</p>
+
+<h6 id="format">Format</h6>
+<div class="highlight"><pre><code class="language-text" data-lang="text">GET /v1/jobs/{jobName}/{jobId}
+</code></pre></div>
+<p>The <code>{jobName}</code> and <code>{jobId}</code> path parameters reflect the values of &lsquo;job.name&rsquo; and &lsquo;job.id&rsquo; in the job config.</p>
+
+<h6 id="request">Request</h6>
+<div class="highlight"><pre><code class="language-text" data-lang="text">GET /v1/jobs/wikipedia-feed/1
+</code></pre></div>
+<h6 id="response">Response</h6>
+<div class="highlight"><pre><code class="language-text" data-lang="text">Status: 200 OK
+</code></pre></div>
+<div class="highlight"><pre><code class="json"><span class="p">{</span>
+    <span class="nt">&quot;status&quot;</span><span class="p">:</span><span class="s2">&quot;STARTED&quot;</span><span class="p">,</span>
+    <span class="nt">&quot;statusDetail&quot;</span><span class="p">:</span><span class="s2">&quot;RUNNING&quot;</span><span class="p">,</span>
+    <span class="nt">&quot;jobName&quot;</span><span class="p">:</span><span class="s2">&quot;wikipedia-feed&quot;</span><span class="p">,</span>
+    <span class="nt">&quot;jobId&quot;</span><span class="p">:</span><span class="s2">&quot;1&quot;</span>
+<span class="p">}</span></code></pre></div>
+
+<h6 id="response-codes">Response codes</h6>
+
+<table class="table table-condensed table-bordered table-striped">
+  <thead>
+    <tr>
+      <th>Status</th>
+      <th>Description</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>200 OK</td><td>The operation completed successfully and the current job status is returned.</td>
+    </tr>
+    <tr>
+      <td>404 Not Found</td><td>The specified job+instance was not found.
+<div class="highlight"><pre><code class="json"><span class="p">{</span>
+    <span class="nt">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Job wikipedia-¯\_(ツ)_/¯-feed instance 1 is not installed on this host.&quot;</span>
+<span class="p">}</span></code></pre></div>
+</td>
+    </tr>
+    <tr>
+      <td>500 Server Error</td><td>There was an error executing the command on the server. e.g. The command timed out.
+<div class="highlight"><pre><code class="json"><span class="p">{</span>
+    <span class="nt">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Timeout waiting for job status.&quot;</span>
+<span class="p">}</span></code></pre></div>
+</td>
+    </tr>
+  </tbody>
+</table>
+
+<p><br/></p>
+
+<h2 id="start-job">Start Job</h2>
+
+<p>Starts the job with the specified app name if it&rsquo;s not already started. The command will return when it has initiated the start operation.</p>
+
+<h6 id="format">Format</h6>
+<div class="highlight"><pre><code class="language-text" data-lang="text">PUT /v1/jobs/{jobName}/{jobId}?status=started
+</code></pre></div>
+<p>Form parameter <code>status</code> is the intended status of the job at the end of the request.</p>
+
+<h6 id="example">Example</h6>
+<div class="highlight"><pre><code class="language-text" data-lang="text">PUT /v1/jobs/wikipedia-feed/1?status=started
+</code></pre></div>
+<h6 id="response">Response</h6>
+<div class="highlight"><pre><code class="language-text" data-lang="text">Status: 202 Accepted
+</code></pre></div>
+<div class="highlight"><pre><code class="json"><span class="p">{</span>
+    <span class="nt">&quot;status&quot;</span><span class="p">:</span><span class="s2">&quot;STARTING&quot;</span><span class="p">,</span>
+    <span class="nt">&quot;statusDetail&quot;</span><span class="p">:</span><span class="s2">&quot;ACCEPTED&quot;</span><span class="p">,</span>
+    <span class="nt">&quot;jobName&quot;</span><span class="p">:</span> <span class="s2">&quot;wikipedia-feed&quot;</span><span class="p">,</span>
+    <span class="nt">&quot;jobId&quot;</span><span class="p">:</span> <span class="s2">&quot;1&quot;</span>
+<span class="p">}</span></code></pre></div>
+
+<h6 id="response-codes">Response codes</h6>
+
+<table class="table table-condensed table-bordered table-striped">
+  <thead>
+    <tr>
+      <th>Status</th>
+      <th>Description</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>200 OK</td><td>The operation completed successfully and the current job status is returned.</td>
+    </tr>
+    <tr>
+      <td>400 Bad Request</td><td>There was a problem with the request. e.g. an invalid status parameter.
+<div class="highlight"><pre><code class="json"><span class="p">{</span>
+    <span class="nt">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Unrecognized status parameter: null&quot;</span>
+<span class="p">}</span></code></pre></div>
+</td>
+    <tr>
+      <td>404 Not Found</td><td>The specified job+instance was not found.
+<div class="highlight"><pre><code class="json"><span class="p">{</span>
+    <span class="nt">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Job wikipedia-¯\_(ツ)_/¯-feed instance 1 is not installed on this host.&quot;</span>
+<span class="p">}</span></code></pre></div>
+</td>
+    </tr>
+    <tr>
+      <td>500 Server Error</td><td>There was an error executing the command on the server. e.g. The command timed out.
+<div class="highlight"><pre><code class="json"><span class="p">{</span>
+    <span class="nt">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Timeout waiting for job status.&quot;</span>
+<span class="p">}</span></code></pre></div>
+</td>
+    </tr>
+  </tbody>
+</table>
+
+<p><br/></p>
+
+<h2 id="stop-job">Stop Job</h2>
+
+<p>Stops the job with the specified app name if it&rsquo;s not already stopped.</p>
+
+<h6 id="format">Format</h6>
+<div class="highlight"><pre><code class="language-text" data-lang="text">PUT /v1/jobs/{jobName}/{jobId}?status=stopped
+</code></pre></div>
+<p>Form parameter <code>status</code> is the intended status of the job at the end of the request.</p>
+
+<h6 id="example">Example</h6>
+<div class="highlight"><pre><code class="language-text" data-lang="text">PUT /v1/jobs/wikipedia-feed/1?status=stopped
+</code></pre></div>
+<h6 id="response">Response</h6>
+<div class="highlight"><pre><code class="language-text" data-lang="text">Status: 202 Accepted
+</code></pre></div>
+<div class="highlight"><pre><code class="json"><span class="p">{</span>
+    <span class="nt">&quot;status&quot;</span><span class="p">:</span><span class="s2">&quot;STOPPED&quot;</span><span class="p">,</span>
+    <span class="nt">&quot;statusDetail&quot;</span><span class="p">:</span><span class="s2">&quot;KILLED&quot;</span><span class="p">,</span>
+    <span class="nt">&quot;jobName&quot;</span><span class="p">:</span> <span class="s2">&quot;wikipedia-feed&quot;</span><span class="p">,</span>
+    <span class="nt">&quot;jobId&quot;</span><span class="p">:</span> <span class="s2">&quot;1&quot;</span>
+<span class="p">}</span></code></pre></div>
+
+<h6 id="response-codes">Response codes</h6>
+
+<table class="table table-condensed table-bordered table-striped">
+  <thead>
+    <tr>
+      <th>Status</th>
+      <th>Description</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>200 OK</td><td>The operation completed successfully and the current job status is returned.</td>
+    </tr>
+    <tr>
+      <td>400 Bad Request</td><td>There was a problem with the request. e.g. an invalid status parameter.
+<div class="highlight"><pre><code class="json"><span class="p">{</span>
+    <span class="nt">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Unrecognized status parameter: null&quot;</span>
+<span class="p">}</span></code></pre></div>
+</td>
+    <tr>
+      <td>404 Not Found</td><td>The specified job+instance was not found.
+<div class="highlight"><pre><code class="json"><span class="p">{</span>
+    <span class="nt">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Job wikipedia-¯\_(ツ)_/¯-feed instance 1 is not installed on this host.&quot;</span>
+<span class="p">}</span></code></pre></div>
+</td>
+    </tr>
+    <tr>
+      <td>500 Server Error</td><td>There was an error executing the command on the server. e.g. The command timed out.
+<div class="highlight"><pre><code class="json"><span class="p">{</span>
+    <span class="nt">&quot;message&quot;</span><span class="p">:</span> <span class="s2">&quot;Timeout waiting for job status.&quot;</span>
+<span class="p">}</span></code></pre></div>
+</td>
+    </tr>
+  </tbody>
+</table>
+
+<p><br/></p>
+
+<h1 id="design">Design</h1>
+
+<h3 id="abstractions">Abstractions</h3>
+
+<p>There are three primary abstractions used by the JobsResource that users can implement to handle any details specific to their environment.</p>
+
+<ol>
+<li> <strong>JobProxy</strong>: The JobProxy is the central point of interacting with Samza jobs. It exposes generic methods to start, stop, and get the status of a Samza job. Implementations of this interface can employ custom code to implement these methods tailored to the specific API for any cluster manager.</li>
+<li> <strong>InstallationFinder</strong>: The InstallationFinder provides a generic interface to discover all the installed jobs, hiding any customizations in the job package structure and its location (e.g. local vs remote host). The InstallationFinder also resolves the job configuration, which is used to validate and identify the job.</li>
+<li> <strong>JobStatusProvider</strong>: The JobStatusProvider allows the JobProxy to get the status of a job in a generic way. The same interface can be used to get the job status on Yarn, Mesos, or standalone jobs. It also enables different implementations for the same cluster. With Yarn, for example, one implementation may get job status via command line and another via the ResourceManager REST API.</li>
+</ol>
+
+<p>The <a href="jobs.html#configuration">configuration</a> must specify a JobProxy factory class explicitly. By contrast, the InstallationFinder and JobStatusProvider abstractions are natural extensions of the JobProxy and are solely provided to demonstrate a pattern for discovering installed jobs and fetching job status. However, they are not an explicit requirement.</p>
+
+<p>The <code>SimpleYarnJobProxy</code> that ships with Samza REST is intended to demonstrate a functional implementation of a JobProxy which works with the Hello Samza jobs. See the <a href="../../../../tutorials/0.11/samza-rest-getting-started.html">tutorial</a> to try it out. You can implement your own JobProxy to adapt the JobsResource to the specifics of your job packaging and deployment model.</p>
+
+<h3 id="request-flow">Request Flow</h3>
+
+<p>After validating each request, the JobsResource invokes the appropriate JobProxy command. The JobProxy uses the InstallationFinder to enumerate the installed jobs and the JobStatusProvider to get the runtime status of the jobs.</p>
+
+<p>The provided <a href="../javadocs/org/apache/samza/rest/proxy/installation/SimpleInstallationFinder.html">SimpleInstallationFinder</a> crawls the file system, starting in the directory specified by the <code>job.installations.path</code> looking for valid Samza job config files. It extracts the <code>job.name</code> and <code>job.id</code> property values and creates an <a href="../javadocs/org/apache/samza/rest/proxy/installation/InstallationRecord.html">InstallationRecord</a> for the each job instance. The InstallationRecord contains all the information needed to start, stop, and get the status for the job.</p>
+
+<p>The provided <a href="../javadocs/org/apache/samza/rest/proxy/job/YarnCliJobStatusProvider.html">YarnCliJobStatusProvider</a> leverages a ScriptRunner to fetch job status using the Yarn ApplicationCLI.</p>
+
+<p>The <a href="../javadocs/org/apache/samza/rest/proxy/job/SimpleYarnJobProxy.html">SimpleYarnJobProxy</a> relies on the scripts in the InstallationRecord scriptFilePath (<code>/bin</code>) directory to start and stop jobs.</p>
+
+<p>The following is a depiction of the implementation that ships with Samza REST:</p>
+
+<p><img src="/img/0.11/learn/documentation/rest/JobsResource.png" alt="JobsResourceDiagram"></p>
+
+<h2 id="configuration">Configuration</h2>
+
+<p>The JobsResource properties should be specified in the same file as the Samza REST configuration. They are specified here for clarity.</p>
+
+<table class="table table-condensed table-bordered table-striped">
+  <thead>
+    <tr>
+      <th>Name</th>
+      <th>Description</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>job.proxy.factory.class</td><td><b>Required:</b> The Job Proxy Factory that will be used to create a Job Proxy to control the job. The value is a fully-qualified class name which must implement JobProxyFactory. Samza ships with one implementation: <pre>org.apache.samza.rest.proxy.job.SimpleYarnJobProxy</pre> <li> Executes shell scripts to start, stop, and get the status of jobs, relying primarily on the YARN ApplicationCLI. It uses the <pre>SimpleInstallationRecord</pre> abstraction to interact with Samza jobs installed on disk.</li></td>
+    </tr>
+    <tr>
+      <td>job.installations.path</td><td><b>Required:</b> The file system path which contains the Samza job installations. The path must be on the same host as the Samza REST Service. Each installation must be a directory with structure conforming to the expectations of the InstallationRecord implementation used by the JobProxy.</td>
+    </tr>
+    <tr>
+      <td>job.config.factory.class</td><td>The config factory to use for reading Samza job configs. This is used to fetch the job.name and job.id properties for each job instance in the InstallationRecord. It&rsquo;s also used to validate that a particular directory within the installations path actually contains Samza jobs. If not specified <pre>org.apache.samza.config.factories.PropertiesConfigFactory</pre> will be used. </td>
+    </tr>
+  </tbody>
+</table>
+
+
+          </div>
+        </div>
+
+      </div><!-- /.wrapper-content -->
+    </div><!-- /.wrapper -->
+
+    <div class="footer">
+      <div class="container">
+        <!-- nothing for now. -->
+      </div>
+    </div>
+
+  
+    <script>
+      $( document ).ready(function() {
+        if ( $.fn.urlExists( "/learn/documentation/latest/rest/resources/jobs.html" ) ) {
+          $("#switch-version-button").addClass("fa fa-history masthead-icon");
+        }
+      });
+
+      /* a function to test whether the url exists or not */
+      (function( $ ) {
+        $.fn.urlExists = function(url) {
+          var http = new XMLHttpRequest();
+          http.open('HEAD', url, false);
+          http.send();
+          return http.status != 404;
+        };
+      }( jQuery ));
+    </script>
+  
+
+    <!-- Google Analytics -->
+    <script>
+      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+      ga('create', 'UA-43122768-1', 'apache.org');
+      ga('send', 'pageview');
+
+    </script>
+  </body>
+</html>