You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by bi...@apache.org on 2014/05/30 18:47:16 UTC
svn commit: r1598665 [12/16] - in /incubator/slider/site/content: ./
architecture/ configuration/ css/ developing/ images/ images/logos/
images/profiles/ img/ js/ registry/ release_notes/ slider_specs/
specification/
Added: incubator/slider/site/content/registry/registry-model.html
URL: http://svn.apache.org/viewvc/incubator/slider/site/content/registry/registry-model.html?rev=1598665&view=auto
==============================================================================
--- incubator/slider/site/content/registry/registry-model.html (added)
+++ incubator/slider/site/content/registry/registry-model.html Fri May 30 16:47:13 2014
@@ -0,0 +1,251 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2014-05-30
+ | Rendered using Apache Maven Fluido Skin 1.3.0
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta name="Date-Revision-yyyymmdd" content="20140530" />
+ <meta http-equiv="Content-Language" content="en" />
+ <title>Apache Slider 0.30 (incubating) - </title>
+ <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.0.min.css" />
+ <link rel="stylesheet" href="../css/site.css" />
+ <link rel="stylesheet" href="../css/print.css" media="print" />
+
+
+ <script type="text/javascript" src="../js/apache-maven-fluido-1.3.0.min.js"></script>
+
+
+ </head>
+ <body class="topBarEnabled">
+
+
+
+
+
+ <div id="topbar" class="navbar navbar-fixed-top ">
+ <div class="navbar-inner">
+ <div class="container"><div class="nav-collapse">
+
+
+ <ul class="nav">
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+ <li class="dropdown-submenu">
+ <a href="../project-info.html" title="Project Information">Project Information</a>
+ <ul class="dropdown-menu">
+ <li> <a href="../index.html" title="About">About</a>
+</li>
+ <li> <a href="../plugin-management.html" title="Plugin Management">Plugin Management</a>
+</li>
+ <li> <a href="../distribution-management.html" title="Distribution Management">Distribution Management</a>
+</li>
+ <li> <a href="../dependency-info.html" title="Dependency Information">Dependency Information</a>
+</li>
+ <li> <a href="../dependency-convergence.html" title="Dependency Convergence">Dependency Convergence</a>
+</li>
+ <li> <a href="../source-repository.html" title="Source Repository">Source Repository</a>
+</li>
+ <li> <a href="../mail-lists.html" title="Mailing Lists">Mailing Lists</a>
+</li>
+ <li> <a href="../issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
+</li>
+ <li> <a href="../integration.html" title="Continuous Integration">Continuous Integration</a>
+</li>
+ <li> <a href="../plugins.html" title="Project Plugins">Project Plugins</a>
+</li>
+ <li> <a href="../license.html" title="Project License">Project License</a>
+</li>
+ <li> <a href="../modules.html" title="Project Modules">Project Modules</a>
+</li>
+ <li> <a href="../dependency-management.html" title="Dependency Management">Dependency Management</a>
+</li>
+ <li> <a href="../team-list.html" title="Project Team">Project Team</a>
+</li>
+ <li> <a href="../project-summary.html" title="Project Summary">Project Summary</a>
+</li>
+ <li> <a href="../dependencies.html" title="Dependencies">Dependencies</a>
+</li>
+ </ul>
+ </li>
+
+ <li class="dropdown-submenu">
+ <a href="../project-reports.html" title="Project Reports">Project Reports</a>
+ <ul class="dropdown-menu">
+ <li> <a href="../surefire-report.html" title="Surefire Report">Surefire Report</a>
+</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documents <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+ <li> <a href="../getting_started.html" title="Getting Started">Getting Started</a>
+</li>
+
+ <li> <a href="../manpage.html" title="manpage">manpage</a>
+</li>
+
+ <li> <a href="../troubleshooting.html" title="Troubleshooting">Troubleshooting</a>
+</li>
+
+ <li> <a href="../architecture/index.html" title="Architecture">Architecture</a>
+</li>
+
+ <li> <a href="../developing/index.html" title="Developing">Developing</a>
+</li>
+
+ <li> <a href="../exitcodes.html" title="Exitcodes">Exitcodes</a>
+</li>
+ </ul>
+ </li>
+ </ul>
+
+
+
+
+ </div>
+
+ </div>
+ </div>
+ </div>
+
+ <div class="container">
+ <div id="banner">
+ <div class="pull-left">
+ <a href=".././" id="bannerLeft">
+ <h2>Apache Slider (incubating)</h2>
+ </a>
+ </div>
+ <div class="pull-right"> <div id="bannerRight">
+ <img src="http://incubator.apache.org/images/apache-incubator-logo.png" />
+ </div>
+ </div>
+ <div class="clear"><hr/></div>
+ </div>
+
+ <div id="breadcrumbs">
+ <ul class="breadcrumb">
+
+
+ <li id="publishDate">Last Published: 2014-05-30</li>
+
+
+
+ <li id="projectVersion" class="pull-right">Version: 0.30</li>
+
+ </ul>
+ </div>
+
+
+
+ <div id="bodyColumn" >
+
+ <!-- -
+ 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. --><h1>Apache Slider: Service Registry</h1>
+<p>The service registry model is designed to support dynamically deployed Slider applications, <i>and</i> statically deployed versions of the same application -provided the latter also registers itself, its public network services, and any configurations and files that it wishes clients to be able to retrieve.</p>
+<p>The architecture and implementation of this registry is not defined here -instead the view of it seen by clients.</p>
+
+<ol style="list-style-type: decimal">
+
+<li>
+<p>A ‘service registry’ exists in the YARN cluster into which services can be registered.</p></li>
+
+<li>
+<p>There is no restriction on the number of services that can be registered in the registry, the type of service that may register, or even on how many registered services an application running in the YARN cluster may register.</p></li>
+
+<li>
+<p>Services are registered by their type, owner and name. As an example, Alice’s slider-managed HBase cluster <tt>ingress</tt> would have a type <tt>org.apache.hbase</tt>, owner <tt>alice</tt> and name <tt>ingress</tt>. </p></li>
+
+<li>
+<p>In the case of Slider-managed services, there is a separate slider instance registration which publishes information about slider itself. In the example above, this would be (<tt>org.apache.slider</tt>,<tt>alice</tt>,<tt>ingress</tt>).</p></li>
+
+<li>
+<p>Services can publish information about themselves, with common entries being:</p>
+
+<ul>
+
+<li>service name and description.</li>
+
+<li>URLs of published web UIs and web service APIs</li>
+
+<li>network address of other protocols</li>
+ </ul></li>
+
+<li>
+<p>Services may also publish. </p>
+
+<ul>
+
+<li>URLs to configuration details</li>
+
+<li>URLs documents published for use as client-side configuration data -either directly or through some form of processing.</li>
+
+<li>public service-specific data, for use by applications that are aware of the specific service type.</li>
+
+<li>internal service-specific data -for use by the components that comprise an application. This allows the registry to be used to glue together the application itself.</li>
+ </ul></li>
+
+<li>
+<p>Services can be listed and examined.</p></li>
+
+<li>
+<p>Service-published configuration key-value pairs can be retrieved by clients</p></li>
+
+<li>
+<p>Service-published documents (and packages of such documents) can be retrieved by clients.</p></li>
+
+<li>
+<p>There’s no requirement for service instances to support any standard protocols;</p></li>
+
+<li>
+<p>Some protocols are defined which they MAY implement. For example, the protocol to enumerate and retrieve configuration documents is designed to be implemented by any service that wishes to publish such content.</p></li>
+
+<li>
+<p>In a secure cluster, the registry data may be restricted, along with any service protocols offered by the registered services. </p></li>
+</ol>
+ </div>
+ </div>
+
+ <hr/>
+
+ <footer>
+ <div class="container">
+ <div class="row span12">Copyright © 2014
+ <a href="http://www.apache.org/">The Apache Software Foundation</a>.
+ All Rights Reserved.
+
+ </div>
+
+ <?xml version="1.0" encoding="UTF-8"?>
+<div class="row-fluid">Apache Slider, Slider, Apache, and the Apache Incubator logo are trademarks of The Apache Software Foundation.</div>
+
+ <p id="poweredBy" class="pull-right">
+ <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+ <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+ </a>
+ </p>
+
+ </div>
+ </footer>
+ </body>
+</html>
Propchange: incubator/slider/site/content/registry/registry-model.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/slider/site/content/registry/service_registry_end_to_end_scenario.html
URL: http://svn.apache.org/viewvc/incubator/slider/site/content/registry/service_registry_end_to_end_scenario.html?rev=1598665&view=auto
==============================================================================
--- incubator/slider/site/content/registry/service_registry_end_to_end_scenario.html (added)
+++ incubator/slider/site/content/registry/service_registry_end_to_end_scenario.html Fri May 30 16:47:13 2014
@@ -0,0 +1,404 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2014-05-30
+ | Rendered using Apache Maven Fluido Skin 1.3.0
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta name="Date-Revision-yyyymmdd" content="20140530" />
+ <meta http-equiv="Content-Language" content="en" />
+ <title>Apache Slider 0.30 (incubating) - </title>
+ <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.0.min.css" />
+ <link rel="stylesheet" href="../css/site.css" />
+ <link rel="stylesheet" href="../css/print.css" media="print" />
+
+
+ <script type="text/javascript" src="../js/apache-maven-fluido-1.3.0.min.js"></script>
+
+
+ </head>
+ <body class="topBarEnabled">
+
+
+
+
+
+ <div id="topbar" class="navbar navbar-fixed-top ">
+ <div class="navbar-inner">
+ <div class="container"><div class="nav-collapse">
+
+
+ <ul class="nav">
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+ <li class="dropdown-submenu">
+ <a href="../project-info.html" title="Project Information">Project Information</a>
+ <ul class="dropdown-menu">
+ <li> <a href="../index.html" title="About">About</a>
+</li>
+ <li> <a href="../plugin-management.html" title="Plugin Management">Plugin Management</a>
+</li>
+ <li> <a href="../distribution-management.html" title="Distribution Management">Distribution Management</a>
+</li>
+ <li> <a href="../dependency-info.html" title="Dependency Information">Dependency Information</a>
+</li>
+ <li> <a href="../dependency-convergence.html" title="Dependency Convergence">Dependency Convergence</a>
+</li>
+ <li> <a href="../source-repository.html" title="Source Repository">Source Repository</a>
+</li>
+ <li> <a href="../mail-lists.html" title="Mailing Lists">Mailing Lists</a>
+</li>
+ <li> <a href="../issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
+</li>
+ <li> <a href="../integration.html" title="Continuous Integration">Continuous Integration</a>
+</li>
+ <li> <a href="../plugins.html" title="Project Plugins">Project Plugins</a>
+</li>
+ <li> <a href="../license.html" title="Project License">Project License</a>
+</li>
+ <li> <a href="../modules.html" title="Project Modules">Project Modules</a>
+</li>
+ <li> <a href="../dependency-management.html" title="Dependency Management">Dependency Management</a>
+</li>
+ <li> <a href="../team-list.html" title="Project Team">Project Team</a>
+</li>
+ <li> <a href="../project-summary.html" title="Project Summary">Project Summary</a>
+</li>
+ <li> <a href="../dependencies.html" title="Dependencies">Dependencies</a>
+</li>
+ </ul>
+ </li>
+
+ <li class="dropdown-submenu">
+ <a href="../project-reports.html" title="Project Reports">Project Reports</a>
+ <ul class="dropdown-menu">
+ <li> <a href="../surefire-report.html" title="Surefire Report">Surefire Report</a>
+</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documents <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+ <li> <a href="../getting_started.html" title="Getting Started">Getting Started</a>
+</li>
+
+ <li> <a href="../manpage.html" title="manpage">manpage</a>
+</li>
+
+ <li> <a href="../troubleshooting.html" title="Troubleshooting">Troubleshooting</a>
+</li>
+
+ <li> <a href="../architecture/index.html" title="Architecture">Architecture</a>
+</li>
+
+ <li> <a href="../developing/index.html" title="Developing">Developing</a>
+</li>
+
+ <li> <a href="../exitcodes.html" title="Exitcodes">Exitcodes</a>
+</li>
+ </ul>
+ </li>
+ </ul>
+
+
+
+
+ </div>
+
+ </div>
+ </div>
+ </div>
+
+ <div class="container">
+ <div id="banner">
+ <div class="pull-left">
+ <a href=".././" id="bannerLeft">
+ <h2>Apache Slider (incubating)</h2>
+ </a>
+ </div>
+ <div class="pull-right"> <div id="bannerRight">
+ <img src="http://incubator.apache.org/images/apache-incubator-logo.png" />
+ </div>
+ </div>
+ <div class="clear"><hr/></div>
+ </div>
+
+ <div id="breadcrumbs">
+ <ul class="breadcrumb">
+
+
+ <li id="publishDate">Last Published: 2014-05-30</li>
+
+
+
+ <li id="projectVersion" class="pull-right">Version: 0.30</li>
+
+ </ul>
+ </div>
+
+
+
+ <div id="bodyColumn" >
+
+ <!-- -
+ 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. --><h1>Apache Slider: Service Registry End-to-End Scenarios</h1>
+<div class="section">
+<h2>AM startup<a name="AM_startup"></a></h2>
+
+<ol style="list-style-type: decimal">
+
+<li>
+<p>AM starts, reads in configuration, creates provider</p></li>
+
+<li>
+<p>AM builds web site, involving provider in process (<i>there’s a possible race condition here, due to the AM registration sequence)</i></p></li>
+
+<li>
+<p>AM registers self with RM, including web and IPC ports, and receives list of existing containers; container loss notifications come in asynchronously <i>(which is why the AM startup process is in a synchronized block)</i></p></li>
+
+<li>
+<p>AM inits it’s <tt>ApplicationState</tt> instance with the config, instance description and RM-supplied container list.</p></li>
+
+<li>
+<p>AM creates service registry client using ZK quorum and path provided when AM was started</p></li>
+
+<li>
+<p>AM registers standard endpoints: RPC, WebUI, REST APIs</p></li>
+
+<li>
+<p>AM registers standard content it can serve (e.g <tt>yarn-site.xml</tt>)</p></li>
+
+<li>
+<p>AM passes registry to provider in <tt>bind()</tt> operation.</p></li>
+
+<li>
+<p>AM triggers review of application state, requesting/releasing nodes as appropriate</p></li>
+</ol></div>
+<div class="section">
+<h2>Agent Startup: standalone<a name="Agent_Startup:_standalone"></a></h2>
+
+<ol style="list-style-type: decimal">
+
+<li>
+<p>Container is issued to AM</p></li>
+
+<li>
+<p>AM chooses component, launches agent on it -with URL of AM a parameter (TODO: Add registry bonding of ZK quorum and path)</p></li>
+
+<li>
+<p>Agent starts up.</p></li>
+
+<li>
+<p>Agent locates AM via URL/ZK info</p></li>
+
+<li>
+<p>Agent heartbeats in with state</p></li>
+
+<li>
+<p>AM gives agent next state command.</p></li>
+</ol></div>
+<div class="section">
+<h2>AM gets state from agent:<a name="AM_gets_state_from_agent:"></a></h2>
+
+<ol style="list-style-type: decimal">
+
+<li>
+<p>Agent heartbeats in</p></li>
+
+<li>
+<p>AM decides if it wants to receive config </p></li>
+
+<li>
+<p>AM issues request for state information -all (dynamic) config data</p></li>
+
+<li>
+<p>Agent receives it</p></li>
+
+<li>
+<p>Agent returns all config state, including: hostnames, allocated ports, generated values (e.g. database connection strings, URLs) - as two-level (allows agent to define which config options are relevant to which document)</p></li>
+</ol></div>
+<div class="section">
+<h2>AM saves state for serving<a name="AM_saves_state_for_serving"></a></h2>
+
+<ol style="list-style-type: decimal">
+
+<li>
+<p>AM saves state in RAM (assumptions: small, will rebuild on restart)</p></li>
+
+<li>
+<p>AM updates service registry with list of content that can be served up and URLs to retrieve them.</p></li>
+
+<li>
+<p>AM fields HTTP GET requests on content</p></li>
+</ol></div>
+<div class="section">
+<h2>AM Serves content<a name="AM_Serves_content"></a></h2>
+<p>A simple REST service serves up content on paths published to the service registry. It is also possible to enumerate documents published by GET operations on parent paths.</p>
+
+<ol style="list-style-type: decimal">
+
+<li>
+<p>On GET command, AM locates referenced agent values</p></li>
+
+<li>
+<p>AM builds up response document from K-V pairs. This can be in a limited set of formats: Hadoop XML, Java properties, YAML, CSV, HTTP, JSON chosen as ? type param. (this generation is done from template processing in AM using slider.core.template module)</p></li>
+
+<li>
+<p>response is streamed with headers of : <tt>content-type</tt>, <tt>content-length</tt>, do not cache in proxy, expires,* (with expiry date chosen as ??)*</p></li>
+</ol>
+<h1>Slider Client</h1>
+<p>Currently slider client enumerates the YARN registry looking for slider instances -including any instances of the same application running before launching a cluster. </p>
+<p>This </p>
+
+<ul>
+
+<li>has race conditions</li>
+
+<li>has scale limitations <tt>O(apps-in-YARN-cluster)</tt> + <tt>O(completed-apps-in-RM-memory)</tt></li>
+
+<li>only retrieves configuration information from slider-deployed application instances. <i>We do not need to restrict ourselves here.</i></li>
+</ul></div>
+<div class="section">
+<h2>Slider Client lists applications<a name="Slider_Client_lists_applications"></a></h2>
+
+<div class="source">
+<pre>slider registry --list [--servicetype <application-type>]
+</pre></div>
+
+<ol style="list-style-type: decimal">
+
+<li>
+<p>Client starts</p></li>
+
+<li>
+<p>Client creates creates service registry client using ZK quorum and path provided in client config properties (slider-client.xml)</p></li>
+
+<li>
+<p>Client enumerates registered services and lists them</p></li>
+</ol></div>
+<div class="section">
+<h2>Slider Client lists content published by an application instance<a name="Slider_Client_lists_content_published_by_an_application_instance"></a></h2>
+
+<div class="source">
+<pre>slider registry <instance> --listconf [--servicetype <application-type>]
+</pre></div>
+
+<ol style="list-style-type: decimal">
+
+<li>
+<p>Client starts</p></li>
+
+<li>
+<p>Client creates creates service registry client using ZK quorum and path provided in client config properties (slider-client.xml)</p></li>
+
+<li>
+<p>Client locates registered service entry -or fails</p></li>
+
+<li>
+<p>Client retrieves service data, specifically the listing of published documents</p></li>
+
+<li>
+<p>Client displays list of content</p></li>
+</ol></div>
+<div class="section">
+<h2>Slider Client retrieves content published by an application instance<a name="Slider_Client_retrieves_content_published_by_an_application_instance"></a></h2>
+
+<div class="source">
+<pre>slider registry <instance> --getconf <document> [--format (xml|properties|text|html|csv|yaml|json,...) [--dest <file>] [--servicetype <application-type>]
+</pre></div>
+
+<ol style="list-style-type: decimal">
+
+<li>
+<p>Client starts</p></li>
+
+<li>
+<p>Client creates creates service registry client using ZK quorum and path provided in client config properties (slider-client.xml)</p></li>
+
+<li>
+<p>Client locates registered service entry -or fails</p></li>
+
+<li>
+<p>Client retrieves service data, specifically the listing of published documents</p></li>
+
+<li>
+<p>Client locates URL of content</p></li>
+
+<li>
+<p>Client builds GET request including format</p></li>
+
+<li>
+<p>Client executes command, follows redirects, validates content length against supplied data.</p></li>
+
+<li>
+<p>Client prints response to console or saves to output file. This is the path specified as a destination, or, if that path refers to a directory, to a file underneath.</p></li>
+</ol></div>
+<div class="section">
+<h2>Slider Client retrieves content set published by an application instance<a name="Slider_Client_retrieves_content_set_published_by_an_application_instance"></a></h2>
+<p>Here a set of documents published is retrieved in the desired format of an application.</p></div>
+<div class="section">
+<h2>Slider Client retrieves document and applies template to it<a name="Slider_Client_retrieves_document_and_applies_template_to_it"></a></h2>
+<p>Here a set of documents published is retrieved in the desired format of an application.</p>
+
+<div class="source">
+<pre>slider registry <instance> --source <document> [--template <path-to-template>] [--outfile <file>] [--servicetype <application-type>]
+</pre></div>
+
+<ol style="list-style-type: decimal">
+
+<li>
+<p>document is retrieved as before, using a simple format such as json to retrieve it.</p></li>
+
+<li>
+<p>The document is parsed and converted back into K-V pairs</p></li>
+
+<li>
+<p>A template using a common/defined template library is applied to the content , generating the final output.</p></li>
+</ol>
+<p>Template paths may include local filesystem paths or (somehow) something in a package file</p></div>
+ </div>
+ </div>
+
+ <hr/>
+
+ <footer>
+ <div class="container">
+ <div class="row span12">Copyright © 2014
+ <a href="http://www.apache.org/">The Apache Software Foundation</a>.
+ All Rights Reserved.
+
+ </div>
+
+ <?xml version="1.0" encoding="UTF-8"?>
+<div class="row-fluid">Apache Slider, Slider, Apache, and the Apache Incubator logo are trademarks of The Apache Software Foundation.</div>
+
+ <p id="poweredBy" class="pull-right">
+ <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+ <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+ </a>
+ </p>
+
+ </div>
+ </footer>
+ </body>
+</html>
Propchange: incubator/slider/site/content/registry/service_registry_end_to_end_scenario.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/slider/site/content/registry/the_YARN_application_registration_and_binding_problem.html
URL: http://svn.apache.org/viewvc/incubator/slider/site/content/registry/the_YARN_application_registration_and_binding_problem.html?rev=1598665&view=auto
==============================================================================
--- incubator/slider/site/content/registry/the_YARN_application_registration_and_binding_problem.html (added)
+++ incubator/slider/site/content/registry/the_YARN_application_registration_and_binding_problem.html Fri May 30 16:47:13 2014
@@ -0,0 +1,346 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2014-05-30
+ | Rendered using Apache Maven Fluido Skin 1.3.0
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta name="Date-Revision-yyyymmdd" content="20140530" />
+ <meta http-equiv="Content-Language" content="en" />
+ <title>Apache Slider 0.30 (incubating) - </title>
+ <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.0.min.css" />
+ <link rel="stylesheet" href="../css/site.css" />
+ <link rel="stylesheet" href="../css/print.css" media="print" />
+
+
+ <script type="text/javascript" src="../js/apache-maven-fluido-1.3.0.min.js"></script>
+
+
+ </head>
+ <body class="topBarEnabled">
+
+
+
+
+
+ <div id="topbar" class="navbar navbar-fixed-top ">
+ <div class="navbar-inner">
+ <div class="container"><div class="nav-collapse">
+
+
+ <ul class="nav">
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+ <li class="dropdown-submenu">
+ <a href="../project-info.html" title="Project Information">Project Information</a>
+ <ul class="dropdown-menu">
+ <li> <a href="../index.html" title="About">About</a>
+</li>
+ <li> <a href="../plugin-management.html" title="Plugin Management">Plugin Management</a>
+</li>
+ <li> <a href="../distribution-management.html" title="Distribution Management">Distribution Management</a>
+</li>
+ <li> <a href="../dependency-info.html" title="Dependency Information">Dependency Information</a>
+</li>
+ <li> <a href="../dependency-convergence.html" title="Dependency Convergence">Dependency Convergence</a>
+</li>
+ <li> <a href="../source-repository.html" title="Source Repository">Source Repository</a>
+</li>
+ <li> <a href="../mail-lists.html" title="Mailing Lists">Mailing Lists</a>
+</li>
+ <li> <a href="../issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
+</li>
+ <li> <a href="../integration.html" title="Continuous Integration">Continuous Integration</a>
+</li>
+ <li> <a href="../plugins.html" title="Project Plugins">Project Plugins</a>
+</li>
+ <li> <a href="../license.html" title="Project License">Project License</a>
+</li>
+ <li> <a href="../modules.html" title="Project Modules">Project Modules</a>
+</li>
+ <li> <a href="../dependency-management.html" title="Dependency Management">Dependency Management</a>
+</li>
+ <li> <a href="../team-list.html" title="Project Team">Project Team</a>
+</li>
+ <li> <a href="../project-summary.html" title="Project Summary">Project Summary</a>
+</li>
+ <li> <a href="../dependencies.html" title="Dependencies">Dependencies</a>
+</li>
+ </ul>
+ </li>
+
+ <li class="dropdown-submenu">
+ <a href="../project-reports.html" title="Project Reports">Project Reports</a>
+ <ul class="dropdown-menu">
+ <li> <a href="../surefire-report.html" title="Surefire Report">Surefire Report</a>
+</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documents <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+ <li> <a href="../getting_started.html" title="Getting Started">Getting Started</a>
+</li>
+
+ <li> <a href="../manpage.html" title="manpage">manpage</a>
+</li>
+
+ <li> <a href="../troubleshooting.html" title="Troubleshooting">Troubleshooting</a>
+</li>
+
+ <li> <a href="../architecture/index.html" title="Architecture">Architecture</a>
+</li>
+
+ <li> <a href="../developing/index.html" title="Developing">Developing</a>
+</li>
+
+ <li> <a href="../exitcodes.html" title="Exitcodes">Exitcodes</a>
+</li>
+ </ul>
+ </li>
+ </ul>
+
+
+
+
+ </div>
+
+ </div>
+ </div>
+ </div>
+
+ <div class="container">
+ <div id="banner">
+ <div class="pull-left">
+ <a href=".././" id="bannerLeft">
+ <h2>Apache Slider (incubating)</h2>
+ </a>
+ </div>
+ <div class="pull-right"> <div id="bannerRight">
+ <img src="http://incubator.apache.org/images/apache-incubator-logo.png" />
+ </div>
+ </div>
+ <div class="clear"><hr/></div>
+ </div>
+
+ <div id="breadcrumbs">
+ <ul class="breadcrumb">
+
+
+ <li id="publishDate">Last Published: 2014-05-30</li>
+
+
+
+ <li id="projectVersion" class="pull-right">Version: 0.30</li>
+
+ </ul>
+ </div>
+
+
+
+ <div id="bodyColumn" >
+
+ <!-- -
+ 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. --><h1>Apache Slider YARN Application Registration and Binding: the Problem</h1>
+<div class="section">
+<h2>March 2014<a name="March_2014"></a></h2>
+<h1>How to bind client applications to services dynamically placed applications?</h1>
+<p>There are some constraints here</p>
+
+<ol style="list-style-type: decimal">
+
+<li>
+<p>The clients may be running outside the cluster -potentially over long-haul links.</p></li>
+
+<li>
+<p>The location of an application deployed in a YARN cluster cannot be predicted.</p></li>
+
+<li>
+<p>The ports used for application service endpoints cannot be hard-coded or predicted. (Alternatively: if they are hard-coded, then Socket-In-Use exceptions may occur)</p></li>
+</ol>
+<p>3: As components fail and get re-instantiated, their location may change. The rate of this depends on cluster and application stability; the longer lived the application, the more common it is.</p>
+<p>Existing Hadoop client apps have a configuration problem of their own: how are the settings in files such as <tt>yarn-site.xml</tt>picked up by today’s applications? This is an issue which has historically been out of scope for Hadoop clusters -but if we are looking at registration and binding of YARN applications, there should be no reason why static applications cannot be discovered and bonded to using the same mechanisms. </p>
+<h1>Other constraints:</h1>
+
+<ol style="list-style-type: decimal">
+
+<li>
+<p>Reduce the amount of change needed in existing applications to a minimum -ideally none, though some pre-launch setup may be acceptable.</p></li>
+
+<li>
+<p>Prevent malicious applications from registering a service endpoints.</p></li>
+
+<li>
+<p>Scale with #of applications and #of clients; not overload on a cluster partitioning.</p></li>
+
+<li>
+<p>Offer a design that works with apps that are deployed in a YARN custer outside of Slider. Rationale: want a mechanism that works with pure-YARN apps</p></li>
+</ol></div>
+<div class="section">
+<h2>Possible Solutions:<a name="Possible_Solutions:"></a></h2>
+<div class="section">
+<h3>ZK<a name="ZK"></a></h3>
+<p>Client applications use ZK to find services (addresses #1, #2 and #3). Requires location code in the client.</p>
+<p>HBase and Accumulo do this as part of a failover-ready design.</p></div>
+<div class="section">
+<h3>DNS<a name="DNS"></a></h3>
+<p>Client apps use DNS to find services, with custom DNS server for a subdomain representing YARN services. Addresses #1; with a shortened TTL and no DNS address caching, #3. #2 addressed only if other DNS entries are used to publish service entries. </p>
+<p>Should support existing applications, with a configuration that is stable over time. It does require the clients to not cache DNS addresses forever (this must be explicitly set on Java applications, irrespective of the published TTL). It generates a load on the DNS servers that is <tt>O(clients/TTL)</tt></p>
+<p>Google Chubby offers a DNS service to handle this. ZK does not -yet.</p></div>
+<div class="section">
+<h3>Floating IP Addresses<a name="Floating_IP_Addresses"></a></h3>
+<p>If the clients know/cache IP addresses of services, these addresses could be floated across service instances. Linux HA has floating IP address support, while Docker containers can make use of them, especially if an integrated DHCP server handles the assignment of IP addresses to specific containers. </p>
+<p>ARP caching is the inevitable problem here, but it is still less brittle than relying on applications to know not to cache IP addresses -and nor does it place so much on DNS servers as short-TTL DNS entries.</p></div>
+<div class="section">
+<h3>LDAP<a name="LDAP"></a></h3>
+<p>Enterprise Directory services are used to publish/locate services. Requires lookup into the directory on binding (#1, #2), re-lookup on failure (#3). LDAP permissions can prevent untrusted applications registering.</p>
+
+<ul>
+
+<li>
+<p>Works well with Windows registries.</p></li>
+
+<li>
+<p>Less common Java-side, though possible -and implemented in the core Java libraries. Spring-LDAP is focused on connection to an LDAP server -not LDAP-driven application config.</p></li>
+</ul></div>
+<div class="section">
+<h3>Registration Web Service<a name="Registration_Web_Service"></a></h3>
+<p>Custom web service registration services used. </p>
+
+<ul>
+
+<li>
+<p>The sole WS-* one, UDDI, does not have a REST equivalent -DNS is assumed to take on that role.</p></li>
+
+<li>
+<p>Requires new client-side code anyway.</p></li>
+</ul></div>
+<div class="section">
+<h3>Zookeeper URL Schema<a name="Zookeeper_URL_Schema"></a></h3>
+<p>Offer our own <tt>zk://</tt> URL; java & .NET implementations (others?) to resolve, browser plugins. </p>
+
+<ul>
+
+<li>
+<p>Would address requirements #1 & #3</p></li>
+
+<li>
+<p>Cost: non-standard; needs an extension for every application/platform, and will not work with tools such as CURL or web browsers</p></li>
+</ul></div>
+<div class="section">
+<h3>AM-side config generation<a name="AM-side_config_generation"></a></h3>
+<p>App-side config generation-YARN applications to generate client-side configuration files for launch-time information (#1, #2). The AM can dynamically create these, and as the storage load is all in the AM, does not consume as much resources in a central server as would publishing it all to that central server.</p>
+
+<ul>
+
+<li>
+<p>Requires application to know of client-side applications to support - and be able to generate to their configuration information (i.e. formatted files).</p></li>
+
+<li>
+<p>Requires the AM to get all information from deployed application components needed to generate bindings. Unless the AM can resolve YARN App templates, need a way to get one of the components in the app to generate settings for the entire cluster, and push them back.</p></li>
+
+<li>
+<p>Needs to be repeated for all YARN apps, however deployed.</p></li>
+
+<li>
+<p>Needs something similar for statically deployed applications.</p></li>
+</ul></div>
+<div class="section">
+<h3>Client-side config generation<a name="Client-side_config_generation"></a></h3>
+<p>YARN app to publish attributes as key-val pairs, client-side code to read and generate configs from (#1, #2). Example configuration generators could create: Hadoop-client XML, Spring, tomcat, guice configs, something for .NET.</p>
+
+<ul>
+
+<li>
+<p>Not limited to Hoya application deployments only.</p></li>
+
+<li>
+<p>K-V pairs need to be published “somewhere”. A structured section in the ZK tree per app is the obvious location -though potentially expensive. An alternative is AM-published data.</p></li>
+
+<li>
+<p>Needs client-side code capable of extracting information from YARN cluster to generate client-specific configuration.</p></li>
+
+<li>
+<p>Assumes (key, value) pairs sufficient for client config generation. Again, some template expansion will aid here (this time: client-side interpretation).</p></li>
+
+<li>
+<p>Client config generators need to find and bind to the target application themselves.</p></li>
+</ul>
+<p>Multiple options:</p>
+
+<ul>
+
+<li>
+<p>Standard ZK structure for YARN applications (maybe: YARN itself to register paths in ZK & set up child permissions,so enforcing security).</p></li>
+
+<li>
+<p>Agents to push to ZK dynamic information as K-V pairs</p></li>
+
+<li>
+<p>Agent provider on AM to fetch K-V pairs and include in status requests</p></li>
+
+<li>
+<p>CLI to fetch app config keys, echo out responses (needs client log4j settings to log all slf/log4j to stderr, so that app > results.txt would save results explicitly</p></li>
+
+<li>
+<p>client side code per app to generate specific binding information</p></li>
+</ul></div>
+<div class="section">
+<h3>Load-balancer app Yarn App<a name="Load-balancer_app_Yarn_App"></a></h3>
+<p>Spread requests round a set of registered handlers, e.g web servers. Support plugins for session binding/sharding. </p>
+<p>Some web servers can do this already; a custom YARN app could use grizzy embedded. Binding problem exists, but would support scaleable dispatch of values.</p>
+
+<ul>
+
+<li>
+<p>Could be offered as an AM extension (in provider, …): scales well with #of apps in cluster, but adds initial location/failover problems.</p></li>
+
+<li>
+<p>If offered as a core-YARN service, location is handled via a fixed URL. This could place high load on the service, even just 302 redirects.</p></li>
+</ul></div></div>
+ </div>
+ </div>
+
+ <hr/>
+
+ <footer>
+ <div class="container">
+ <div class="row span12">Copyright © 2014
+ <a href="http://www.apache.org/">The Apache Software Foundation</a>.
+ All Rights Reserved.
+
+ </div>
+
+ <?xml version="1.0" encoding="UTF-8"?>
+<div class="row-fluid">Apache Slider, Slider, Apache, and the Apache Incubator logo are trademarks of The Apache Software Foundation.</div>
+
+ <p id="poweredBy" class="pull-right">
+ <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+ <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+ </a>
+ </p>
+
+ </div>
+ </footer>
+ </body>
+</html>
Propchange: incubator/slider/site/content/registry/the_YARN_application_registration_and_binding_problem.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/slider/site/content/release_notes/release-0.30.0.html
URL: http://svn.apache.org/viewvc/incubator/slider/site/content/release_notes/release-0.30.0.html?rev=1598665&view=auto
==============================================================================
--- incubator/slider/site/content/release_notes/release-0.30.0.html (added)
+++ incubator/slider/site/content/release_notes/release-0.30.0.html Fri May 30 16:47:13 2014
@@ -0,0 +1,213 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2014-05-30
+ | Rendered using Apache Maven Fluido Skin 1.3.0
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta name="Date-Revision-yyyymmdd" content="20140530" />
+ <meta http-equiv="Content-Language" content="en" />
+ <title>Apache Slider 0.30 (incubating) - </title>
+ <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.0.min.css" />
+ <link rel="stylesheet" href="../css/site.css" />
+ <link rel="stylesheet" href="../css/print.css" media="print" />
+
+
+ <script type="text/javascript" src="../js/apache-maven-fluido-1.3.0.min.js"></script>
+
+
+ </head>
+ <body class="topBarEnabled">
+
+
+
+
+
+ <div id="topbar" class="navbar navbar-fixed-top ">
+ <div class="navbar-inner">
+ <div class="container"><div class="nav-collapse">
+
+
+ <ul class="nav">
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+ <li class="dropdown-submenu">
+ <a href="../project-info.html" title="Project Information">Project Information</a>
+ <ul class="dropdown-menu">
+ <li> <a href="../index.html" title="About">About</a>
+</li>
+ <li> <a href="../plugin-management.html" title="Plugin Management">Plugin Management</a>
+</li>
+ <li> <a href="../distribution-management.html" title="Distribution Management">Distribution Management</a>
+</li>
+ <li> <a href="../dependency-info.html" title="Dependency Information">Dependency Information</a>
+</li>
+ <li> <a href="../dependency-convergence.html" title="Dependency Convergence">Dependency Convergence</a>
+</li>
+ <li> <a href="../source-repository.html" title="Source Repository">Source Repository</a>
+</li>
+ <li> <a href="../mail-lists.html" title="Mailing Lists">Mailing Lists</a>
+</li>
+ <li> <a href="../issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
+</li>
+ <li> <a href="../integration.html" title="Continuous Integration">Continuous Integration</a>
+</li>
+ <li> <a href="../plugins.html" title="Project Plugins">Project Plugins</a>
+</li>
+ <li> <a href="../license.html" title="Project License">Project License</a>
+</li>
+ <li> <a href="../modules.html" title="Project Modules">Project Modules</a>
+</li>
+ <li> <a href="../dependency-management.html" title="Dependency Management">Dependency Management</a>
+</li>
+ <li> <a href="../team-list.html" title="Project Team">Project Team</a>
+</li>
+ <li> <a href="../project-summary.html" title="Project Summary">Project Summary</a>
+</li>
+ <li> <a href="../dependencies.html" title="Dependencies">Dependencies</a>
+</li>
+ </ul>
+ </li>
+
+ <li class="dropdown-submenu">
+ <a href="../project-reports.html" title="Project Reports">Project Reports</a>
+ <ul class="dropdown-menu">
+ <li> <a href="../surefire-report.html" title="Surefire Report">Surefire Report</a>
+</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documents <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+ <li> <a href="../getting_started.html" title="Getting Started">Getting Started</a>
+</li>
+
+ <li> <a href="../manpage.html" title="manpage">manpage</a>
+</li>
+
+ <li> <a href="../troubleshooting.html" title="Troubleshooting">Troubleshooting</a>
+</li>
+
+ <li> <a href="../architecture/index.html" title="Architecture">Architecture</a>
+</li>
+
+ <li> <a href="../developing/index.html" title="Developing">Developing</a>
+</li>
+
+ <li> <a href="../exitcodes.html" title="Exitcodes">Exitcodes</a>
+</li>
+ </ul>
+ </li>
+ </ul>
+
+
+
+
+ </div>
+
+ </div>
+ </div>
+ </div>
+
+ <div class="container">
+ <div id="banner">
+ <div class="pull-left">
+ <a href=".././" id="bannerLeft">
+ <h2>Apache Slider (incubating)</h2>
+ </a>
+ </div>
+ <div class="pull-right"> <div id="bannerRight">
+ <img src="http://incubator.apache.org/images/apache-incubator-logo.png" />
+ </div>
+ </div>
+ <div class="clear"><hr/></div>
+ </div>
+
+ <div id="breadcrumbs">
+ <ul class="breadcrumb">
+
+
+ <li id="publishDate">Last Published: 2014-05-30</li>
+
+
+
+ <li id="projectVersion" class="pull-right">Version: 0.30</li>
+
+ </ul>
+ </div>
+
+
+
+ <div id="bodyColumn" >
+
+ <!-- -
+ 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. --><h1>Apache Slider Release 0.30.0 (incubating)</h1>
+<p>May 2014</p>
+<p>This release is built against the Apache Hadoop 2.4.0, HBase-0.98.1 and Accumulo 1.5.1 artifacts. </p>
+<p>Download: []()</p>
+<div class="section">
+<h2>Key changes<a name="Key_changes"></a></h2>
+
+<ol style="list-style-type: decimal">
+
+<li>Slider application registry that allow registration and discovery of application configuration and URLs (such as jmx endpoints and management UI) for client consumption.</li>
+
+<li>Move to a .zip packaging for Slider application packages.</li>
+
+<li>Richer metainfo support to provide start ordering and arbitrary template that can be published.</li>
+
+<li>Updated application definition packages for HBase, Accumulo, and Storm.</li>
+</ol></div>
+<div class="section">
+<h2>Other changes<a name="Other_changes"></a></h2>
+
+<ol style="list-style-type: decimal">
+
+<li><a class="externalLink" href="https://issues.apache.org/jira/browse/SLIDER-13">SLIDER-13</a> switch build to be java7+ only.</li>
+</ol></div>
+ </div>
+ </div>
+
+ <hr/>
+
+ <footer>
+ <div class="container">
+ <div class="row span12">Copyright © 2014
+ <a href="http://www.apache.org/">The Apache Software Foundation</a>.
+ All Rights Reserved.
+
+ </div>
+
+ <?xml version="1.0" encoding="UTF-8"?>
+<div class="row-fluid">Apache Slider, Slider, Apache, and the Apache Incubator logo are trademarks of The Apache Software Foundation.</div>
+
+ <p id="poweredBy" class="pull-right">
+ <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+ <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+ </a>
+ </p>
+
+ </div>
+ </footer>
+ </body>
+</html>
Propchange: incubator/slider/site/content/release_notes/release-0.30.0.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/slider/site/content/security.html
URL: http://svn.apache.org/viewvc/incubator/slider/site/content/security.html?rev=1598665&view=auto
==============================================================================
--- incubator/slider/site/content/security.html (added)
+++ incubator/slider/site/content/security.html Fri May 30 16:47:13 2014
@@ -0,0 +1,358 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2014-05-30
+ | Rendered using Apache Maven Fluido Skin 1.3.0
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta name="Date-Revision-yyyymmdd" content="20140530" />
+ <meta http-equiv="Content-Language" content="en" />
+ <title>Apache Slider 0.30 (incubating) - </title>
+ <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
+ <link rel="stylesheet" href="./css/site.css" />
+ <link rel="stylesheet" href="./css/print.css" media="print" />
+
+
+ <script type="text/javascript" src="./js/apache-maven-fluido-1.3.0.min.js"></script>
+
+
+ </head>
+ <body class="topBarEnabled">
+
+
+
+
+
+ <div id="topbar" class="navbar navbar-fixed-top ">
+ <div class="navbar-inner">
+ <div class="container"><div class="nav-collapse">
+
+
+ <ul class="nav">
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+ <li class="dropdown-submenu">
+ <a href="project-info.html" title="Project Information">Project Information</a>
+ <ul class="dropdown-menu">
+ <li> <a href="index.html" title="About">About</a>
+</li>
+ <li> <a href="plugin-management.html" title="Plugin Management">Plugin Management</a>
+</li>
+ <li> <a href="distribution-management.html" title="Distribution Management">Distribution Management</a>
+</li>
+ <li> <a href="dependency-info.html" title="Dependency Information">Dependency Information</a>
+</li>
+ <li> <a href="dependency-convergence.html" title="Dependency Convergence">Dependency Convergence</a>
+</li>
+ <li> <a href="source-repository.html" title="Source Repository">Source Repository</a>
+</li>
+ <li> <a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a>
+</li>
+ <li> <a href="issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
+</li>
+ <li> <a href="integration.html" title="Continuous Integration">Continuous Integration</a>
+</li>
+ <li> <a href="plugins.html" title="Project Plugins">Project Plugins</a>
+</li>
+ <li> <a href="license.html" title="Project License">Project License</a>
+</li>
+ <li> <a href="modules.html" title="Project Modules">Project Modules</a>
+</li>
+ <li> <a href="dependency-management.html" title="Dependency Management">Dependency Management</a>
+</li>
+ <li> <a href="team-list.html" title="Project Team">Project Team</a>
+</li>
+ <li> <a href="project-summary.html" title="Project Summary">Project Summary</a>
+</li>
+ <li> <a href="dependencies.html" title="Dependencies">Dependencies</a>
+</li>
+ </ul>
+ </li>
+
+ <li class="dropdown-submenu">
+ <a href="project-reports.html" title="Project Reports">Project Reports</a>
+ <ul class="dropdown-menu">
+ <li> <a href="surefire-report.html" title="Surefire Report">Surefire Report</a>
+</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documents <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+ <li> <a href="getting_started.html" title="Getting Started">Getting Started</a>
+</li>
+
+ <li> <a href="manpage.html" title="manpage">manpage</a>
+</li>
+
+ <li> <a href="troubleshooting.html" title="Troubleshooting">Troubleshooting</a>
+</li>
+
+ <li> <a href="architecture/index.html" title="Architecture">Architecture</a>
+</li>
+
+ <li> <a href="developing/index.html" title="Developing">Developing</a>
+</li>
+
+ <li> <a href="exitcodes.html" title="Exitcodes">Exitcodes</a>
+</li>
+ </ul>
+ </li>
+ </ul>
+
+
+
+
+ </div>
+
+ </div>
+ </div>
+ </div>
+
+ <div class="container">
+ <div id="banner">
+ <div class="pull-left">
+ <a href="./" id="bannerLeft">
+ <h2>Apache Slider (incubating)</h2>
+ </a>
+ </div>
+ <div class="pull-right"> <div id="bannerRight">
+ <img src="http://incubator.apache.org/images/apache-incubator-logo.png" />
+ </div>
+ </div>
+ <div class="clear"><hr/></div>
+ </div>
+
+ <div id="breadcrumbs">
+ <ul class="breadcrumb">
+
+
+ <li id="publishDate">Last Published: 2014-05-30</li>
+
+
+
+ <li id="projectVersion" class="pull-right">Version: 0.30</li>
+
+ </ul>
+ </div>
+
+
+
+ <div id="bodyColumn" >
+
+ <!-- -
+ 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. --><h1>Apache Slider Security</h1>
+<p>This document discusses the design, implementation and use of Slider to deploy secure applications on a secure Hadoop cluster.</p>
+<div class="section">
+<div class="section">
+<h3>Important:<a name="Important:"></a></h3>
+<p>This document does not cover Kerberos, how to secure a Hadoop cluster, Kerberos command line tools or how Hadoop uses delegation tokens to delegate permissions round a cluster. These are assumed, though some links to useful pages are listed at the bottom. </p></div></div>
+<div class="section">
+<h2>Concepts<a name="Concepts"></a></h2>
+<p>Slider runs in secure clusters, but with restrictions</p>
+
+<ol style="list-style-type: decimal">
+
+<li>The keytabs to allow a worker to authenticate with the master must be distributed in advance: Slider does not attempt to pass these around.</li>
+
+<li>Until the location of Slider node instances can be strictly limited to a set of nodes (a future YARN feature), the keytabs must be passed to all the nodes in the cluster in advance, <i>and made available to the user creating the cluster</i></li>
+
+<li>due to the way that HBase and accumulo authenticate worker nodes to the masters, any HBase node running on a server must authenticate as the same principal, and so have equal access rights to the HBase cluster.</li>
+
+<li>As the data directories for a slider cluster are created under the home directories of that user, the principals representing all role instances in the clusters <i>MUST</i> have read/write access to these files. This can be done with a shortname that matches that of the user, or by requesting that Slider create a directory with group write permissions -and using LDAP to indentify the application principals as members of the same group as the user.</li>
+</ol></div>
+<div class="section">
+<h2>Security Requirements<a name="Security_Requirements"></a></h2>
+<div class="section">
+<h3>Needs<a name="Needs"></a></h3>
+
+<ul>
+
+<li>Slider and deployed applications to work against secure HDFS</li>
+
+<li>Slider to work with secure YARN.</li>
+
+<li>Slider to start secure applications</li>
+
+<li>Kerberos and ActiveDirectory to perform the authentication.</li>
+
+<li>Slider to only allow cluster operations by authenticated users -command line and direct RPC.</li>
+
+<li>Any Slider Web UI and REST API for Ambari to only allow access to authenticated users.</li>
+
+<li>The Slider database in <tt>~/.slider/clusters/$name/data</tt> to be writable by HBase</li>
+</ul></div>
+<div class="section">
+<h3>Short-lived Clusters<a name="Short-lived_Clusters"></a></h3>
+
+<ul>
+
+<li>Cluster to remain secure for the duration of the Kerberos tokens issued to Slider.</li>
+</ul></div>
+<div class="section">
+<h3>Long-lived Clusters<a name="Long-lived_Clusters"></a></h3>
+
+<ul>
+
+<li>Slider application instance and HBase instance to remain functional and secure over an indefinite period of time.</li>
+</ul></div>
+<div class="section">
+<h3>Initial Non-requirements<a name="Initial_Non-requirements"></a></h3>
+
+<ul>
+
+<li>secure audit trail of cluster operations.</li>
+
+<li>multiple authorized users being granted rights to a Slider Cluster (YARN admins can always kill the Slider application instance.</li>
+
+<li>More than one HBase cluster in the YARN cluster belonging to a single user (irrespective of how they are started).</li>
+
+<li>Any way to revoke certificates/rights of running containers.</li>
+</ul></div>
+<div class="section">
+<h3>Assumptions<a name="Assumptions"></a></h3>
+
+<ul>
+
+<li>Kerberos is running and that HDFS and YARN are running Kerberized.</li>
+
+<li>LDAP cannot be assumed.</li>
+
+<li>Credentials needed for HBase can be pushed out into the local filesystems of the of the worker nodes via some external mechanism (e.g. scp), and protected by the access permissions of the native filesystem. Any user with access to these credentials is considered to have been granted such rights.</li>
+
+<li>These credentials can outlive the duration of the HBase containers</li>
+
+<li>The user running HBase has the same identity as that of the HBase cluster.</li>
+</ul></div></div>
+<div class="section">
+<h2>Design<a name="Design"></a></h2>
+
+<ol style="list-style-type: decimal">
+
+<li>The user is expected to have their own Kerberos principal, and have used <tt>kinit</tt> or equivalent to authenticate with Kerberos and gain a (time-bounded) TGT</li>
+
+<li>The user is expected to have their own principals for every host in the cluster of the form username/hostname@REALM</li>
+
+<li>A keytab must be generated which contains all these principals -and distributed to all the nodes in the cluster with read access permissions to the user.</li>
+
+<li>When the user creates a secure cluster, they provide the standard HBase kerberos options to identify the principals to use and the keytab location.</li>
+</ol>
+<p>The Slider Client will talk to HDFS and YARN authenticating itself with the TGT, talking to the YARN and HDFS principals which it has been configured to expect.</p>
+<p>This can be done as described in <a href="client-configuration.html">Client Configuration</a> on the command line as</p>
+
+<div class="source">
+<pre> -D yarn.resourcemanager.principal=yarn/master@LOCAL
+ -D dfs.namenode.kerberos.principal=hdfs/master@LOCAL
+</pre></div>
+<p>The Slider Client will create the cluster data directory in HDFS with <tt>rwx</tt> permissions for<br />user <tt>r-x</tt> for the group and <tt>---</tt> for others. (these can be configurable as part of the cluster options), </p>
+<p>It will then deploy the AM, which will (somehow? for how long?) retain the access rights of the user that created the cluster.</p>
+<p>The Application Master will read in the JSON cluster specification file, and instantiate the relevant number of componentss. </p></div>
+<div class="section">
+<h2>Securing communications between the Slider Client and the Slider AM.<a name="Securing_communications_between_the_Slider_Client_and_the_Slider_AM."></a></h2>
+<p>When the AM is deployed in a secure cluster, it automatically uses Kerberos-authorized RPC channels. The client must acquire a token to talk the AM. </p>
+<p>This is provided by the YARN Resource Manager when the client application wishes to talk with the SliderAM -a token which is only provided after the caller authenticates itself as the user that has access rights to the cluster</p>
+<p>To allow the client to freeze a Slider application instance while they are unable to acquire a token to authenticate with the AM, use the <tt>--force</tt> option.</p>
+<div class="section">
+<h3>How to enable a secure Slider client<a name="How_to_enable_a_secure_Slider_client"></a></h3>
+<p>Slider can be placed into secure mode by setting the Hadoop security options:</p>
+<p>This can be done in <tt>slider-client.xml</tt>:</p>
+
+<div class="source">
+<pre><property>
+ <name>hadoop.security.authorization</name>
+ <value>true</value>
+</property>
+
+<property>
+ <name>hadoop.security.authentication</name>
+ <value>kerberos</value>
+</property>
+</pre></div>
+<p>Or it can be done on the command line</p>
+
+<div class="source">
+<pre>-D hadoop.security.authorization=true -D hadoop.security.authentication=kerberos
+</pre></div></div>
+<div class="section">
+<h3>Adding Kerberos binding properties to the Slider Client JVM<a name="Adding_Kerberos_binding_properties_to_the_Slider_Client_JVM"></a></h3>
+<p>The Java Kerberos library needs to know the Kerberos controller and realm to use. This should happen automatically if this is set up as the default Kerberos binding (on a Unix system this is done in <tt>/etc/krb5.conf</tt>.</p>
+<p>If is not set up, a stack trace with kerberos classes at the top and the message <tt>java.lang.IllegalArgumentException: Can't get Kerberos realm</tt> will be printed -and the client will then fail.</p>
+<p>The realm and controller can be defined in the Java system properties <tt>java.security.krb5.realm</tt> and <tt>java.security.krb5.kdc</tt>. These can be fixed in the JVM options, as described in the <a href="client-configuration.html">Client Configuration</a> documentation.</p>
+<p>They can also be set on the Slider command line itself, using the <tt>-S</tt> parameter.</p>
+
+<div class="source">
+<pre>-S java.security.krb5.realm=MINICLUSTER -S java.security.krb5.kdc=hadoop-kdc
+</pre></div></div>
+<div class="section">
+<h3>Java Cryptography Exceptions<a name="Java_Cryptography_Exceptions"></a></h3>
+<p>When trying to talk to a secure, cluster you may see the message:</p>
+
+<div class="source">
+<pre>No valid credentials provided (Mechanism level: Illegal key size)]
+</pre></div>
+<p>This means that the JRE does not have the extended cryptography package needed to work with the keys that Kerberos needs. This must be downloaded from Oracle (or other supplier of the JVM) and installed according to its accompanying instructions.</p></div></div>
+<div class="section">
+<h2>Useful Links<a name="Useful_Links"></a></h2>
+
+<ol style="list-style-type: decimal">
+
+<li><a class="externalLink" href="http://hortonworks.com/wp-content/uploads/2011/10/security-design_withCover-1.pdf">Adding Security to Apache Hadoop</a></li>
+
+<li><a class="externalLink" href="http://hortonworks.com/blog/the-role-of-delegation-tokens-in-apache-hadoop-security/">The Role of Delegation Tokens in Apache Hadoop Security</a></li>
+
+<li><a class="externalLink" href="http://hbase.apache.org/book/security.html">Chapter 8. Secure Apache HBase</a></li>
+
+<li>Hadoop Operations p135+</li>
+
+<li><a class="externalLink" href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/jgss/tutorials/KerberosReq.htmla">Java Kerberos Requirements</a></li>
+
+<li><a class="externalLink" href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/jgss/tutorials/Troubleshooting.html">Troubleshooting Kerberos on Java</a></li>
+
+<li>For OS/X users, the GUI ticket viewer is <tt>/System/Library/CoreServices/Ticket\ Viewer.app</tt></li>
+</ol></div>
+ </div>
+ </div>
+
+ <hr/>
+
+ <footer>
+ <div class="container">
+ <div class="row span12">Copyright © 2014
+ <a href="http://www.apache.org/">The Apache Software Foundation</a>.
+ All Rights Reserved.
+
+ </div>
+
+ <?xml version="1.0" encoding="UTF-8"?>
+<div class="row-fluid">Apache Slider, Slider, Apache, and the Apache Incubator logo are trademarks of The Apache Software Foundation.</div>
+
+ <p id="poweredBy" class="pull-right">
+ <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+ <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+ </a>
+ </p>
+
+ </div>
+ </footer>
+ </body>
+</html>
Propchange: incubator/slider/site/content/security.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/slider/site/content/slider_specs/application_configuration.html
URL: http://svn.apache.org/viewvc/incubator/slider/site/content/slider_specs/application_configuration.html?rev=1598665&view=auto
==============================================================================
--- incubator/slider/site/content/slider_specs/application_configuration.html (added)
+++ incubator/slider/site/content/slider_specs/application_configuration.html Fri May 30 16:47:13 2014
@@ -0,0 +1,253 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2014-05-30
+ | Rendered using Apache Maven Fluido Skin 1.3.0
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta name="Date-Revision-yyyymmdd" content="20140530" />
+ <meta http-equiv="Content-Language" content="en" />
+ <title>Apache Slider 0.30 (incubating) - </title>
+ <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.0.min.css" />
+ <link rel="stylesheet" href="../css/site.css" />
+ <link rel="stylesheet" href="../css/print.css" media="print" />
+
+
+ <script type="text/javascript" src="../js/apache-maven-fluido-1.3.0.min.js"></script>
+
+
+ </head>
+ <body class="topBarEnabled">
+
+
+
+
+
+ <div id="topbar" class="navbar navbar-fixed-top ">
+ <div class="navbar-inner">
+ <div class="container"><div class="nav-collapse">
+
+
+ <ul class="nav">
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+ <li class="dropdown-submenu">
+ <a href="../project-info.html" title="Project Information">Project Information</a>
+ <ul class="dropdown-menu">
+ <li> <a href="../index.html" title="About">About</a>
+</li>
+ <li> <a href="../plugin-management.html" title="Plugin Management">Plugin Management</a>
+</li>
+ <li> <a href="../distribution-management.html" title="Distribution Management">Distribution Management</a>
+</li>
+ <li> <a href="../dependency-info.html" title="Dependency Information">Dependency Information</a>
+</li>
+ <li> <a href="../dependency-convergence.html" title="Dependency Convergence">Dependency Convergence</a>
+</li>
+ <li> <a href="../source-repository.html" title="Source Repository">Source Repository</a>
+</li>
+ <li> <a href="../mail-lists.html" title="Mailing Lists">Mailing Lists</a>
+</li>
+ <li> <a href="../issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
+</li>
+ <li> <a href="../integration.html" title="Continuous Integration">Continuous Integration</a>
+</li>
+ <li> <a href="../plugins.html" title="Project Plugins">Project Plugins</a>
+</li>
+ <li> <a href="../license.html" title="Project License">Project License</a>
+</li>
+ <li> <a href="../modules.html" title="Project Modules">Project Modules</a>
+</li>
+ <li> <a href="../dependency-management.html" title="Dependency Management">Dependency Management</a>
+</li>
+ <li> <a href="../team-list.html" title="Project Team">Project Team</a>
+</li>
+ <li> <a href="../project-summary.html" title="Project Summary">Project Summary</a>
+</li>
+ <li> <a href="../dependencies.html" title="Dependencies">Dependencies</a>
+</li>
+ </ul>
+ </li>
+
+ <li class="dropdown-submenu">
+ <a href="../project-reports.html" title="Project Reports">Project Reports</a>
+ <ul class="dropdown-menu">
+ <li> <a href="../surefire-report.html" title="Surefire Report">Surefire Report</a>
+</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documents <b class="caret"></b></a>
+ <ul class="dropdown-menu">
+
+ <li> <a href="../getting_started.html" title="Getting Started">Getting Started</a>
+</li>
+
+ <li> <a href="../manpage.html" title="manpage">manpage</a>
+</li>
+
+ <li> <a href="../troubleshooting.html" title="Troubleshooting">Troubleshooting</a>
+</li>
+
+ <li> <a href="../architecture/index.html" title="Architecture">Architecture</a>
+</li>
+
+ <li> <a href="../developing/index.html" title="Developing">Developing</a>
+</li>
+
+ <li> <a href="../exitcodes.html" title="Exitcodes">Exitcodes</a>
+</li>
+ </ul>
+ </li>
+ </ul>
+
+
+
+
+ </div>
+
+ </div>
+ </div>
+ </div>
+
+ <div class="container">
+ <div id="banner">
+ <div class="pull-left">
+ <a href=".././" id="bannerLeft">
+ <h2>Apache Slider (incubating)</h2>
+ </a>
+ </div>
+ <div class="pull-right"> <div id="bannerRight">
+ <img src="http://incubator.apache.org/images/apache-incubator-logo.png" />
+ </div>
+ </div>
+ <div class="clear"><hr/></div>
+ </div>
+
+ <div id="breadcrumbs">
+ <ul class="breadcrumb">
+
+
+ <li id="publishDate">Last Published: 2014-05-30</li>
+
+
+
+ <li id="projectVersion" class="pull-right">Version: 0.30</li>
+
+ </ul>
+ </div>
+
+
+
+ <div id="bodyColumn" >
+
+ <!-- -
+ 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. --><h1>Apache Slider Application Configuration</h1>
+<p>App Configuration captures the default configuration associated with the application. <i>Details of configuration management is discussed in a separate spec</i>. The default configuration is modified based on user provided InstanceConfiguration, cluster specific details (e.g. HDFS root, local dir root), container allocated resources (port and hostname), and dependencies (e.g. ZK quorom hosts) and handed to the component instances.</p>
+<p>App Configuration is a folder containing all configuration needed by the application. Config files include any site.xml, log4j properties file, etc. </p>
+<p>In addition, application may have configuration parameters that do not necessarily go into a config files. Such configurations may be used during template expansion (parameters in env.sh files), as environment variables (e.g. JAVA_HOME), customize user names (for runas). These configurations can be provided as user inputs or are automatically inferred from the environment. Such configurations are stored in a file named “app_config.xml”.</p>
+<p><img src="../../resources/images/app_config_folders_01.png?raw=true" alt="Image" /></p>
+<p>A config file is of the form:</p>
+
+<div class="source">
+<pre><?xml version="1.0"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<configuration>
+ <property>
+ ...
+ </property>
+</configuration>
+</pre></div>
+<p>Each configuration property is specified as follows:</p>
+
+<div class="source">
+<pre><property>
+ <name>storm.zookeeper.session.timeout</name>
+ <value>20000</value>
+ <description>The session timeout for clients to ZooKeeper.</description>
+ <required>false</required>
+ <valueRestriction>0-30000</valueRestriction>
+ </property>
+ <property>
+ <name>storm.zookeeper.root</name>
+ <value>/storm</value>
+ <description>The root location at which Storm stores data in ZK.</description>
+ <required>true</required>
+ </property>
+ <property>
+ <name>jvm.heapsize</name>
+ <value>256</value>
+ <description>The default JVM heap size for any component instance.</description>
+ <required>true</required>
+ </property>
+ <property>
+ <name>nimbus.host</name>
+ <value>localhost</value>
+ <description>The host that the master server is running on.</description>
+ <required>true</required>
+ <clientVisible>true</clientVisible>
+ </property>
+</pre></div>
+
+<ul>
+
+<li>
+<p>name: name of the parameter</p></li>
+
+<li>
+<p>value: default value of the parameter</p></li>
+
+<li>
+<p>description: a short description of the parameter</p></li>
+
+<li>
+<p>required: if the parameter is mandatory in which case it must have a value - default is “false”</p></li>
+
+<li>
+<p>clientVisible: if the property must be exported for a client</p></li>
+</ul>
+ </div>
+ </div>
+
+ <hr/>
+
+ <footer>
+ <div class="container">
+ <div class="row span12">Copyright © 2014
+ <a href="http://www.apache.org/">The Apache Software Foundation</a>.
+ All Rights Reserved.
+
+ </div>
+
+ <?xml version="1.0" encoding="UTF-8"?>
+<div class="row-fluid">Apache Slider, Slider, Apache, and the Apache Incubator logo are trademarks of The Apache Software Foundation.</div>
+
+ <p id="poweredBy" class="pull-right">
+ <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+ <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+ </a>
+ </p>
+
+ </div>
+ </footer>
+ </body>
+</html>
Propchange: incubator/slider/site/content/slider_specs/application_configuration.html
------------------------------------------------------------------------------
svn:eol-style = native