Author: smohanty
Date: Thu Mar 19 18:20:56 2015
New Revision: 1667824
URL: http://svn.apache.org/r1667824
Log:
doc changes for packaging simplification
Added:
incubator/slider/site/trunk/content/docs/slider_specs/simple_pkg.md
Modified:
incubator/slider/site/trunk/content/docs/slider_specs/index.md
Modified: incubator/slider/site/trunk/content/docs/slider_specs/index.md
URL:
http://svn.apache.org/viewvc/incubator/slider/site/trunk/content/docs/slider_specs/index.md?rev=1667824&r1=1667823&r2=1667824&view=diff
==============================================================================
--- incubator/slider/site/trunk/content/docs/slider_specs/index.md (original)
+++ incubator/slider/site/trunk/content/docs/slider_specs/index.md Thu Mar 19
18:20:56 2015
@@ -38,7 +38,9 @@
##Specifications
-Refer to [Creating a Slider package for
Memcached](hello_world_slider_app.html) for a quick over view of how to write a
Slider app.
+Refer to [Creating a Slider package for
Memcached](hello_world_slider_app.html) for a quick over view of how to write a
Slider app.
+
+Packaging enhancements: [Simplified Packaging](simple_pkg.html) describes a
simplified version of packaging that Slider supports for applications that do
not need full capability of a Slider application package. *The work is
available in the develop branch and is targeted for the next relase.*
The entry points to leverage Slider are:
Added: incubator/slider/site/trunk/content/docs/slider_specs/simple_pkg.md
URL:
http://svn.apache.org/viewvc/incubator/slider/site/trunk/content/docs/slider_specs/simple_pkg.md?rev=1667824&view=auto
==============================================================================
--- incubator/slider/site/trunk/content/docs/slider_specs/simple_pkg.md (added)
+++ incubator/slider/site/trunk/content/docs/slider_specs/simple_pkg.md Thu Mar
19 18:20:56 2015
@@ -0,0 +1,198 @@
+<!---
+ 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.
+-->
+
+# Simplified Application Packaging
+
+An application may be a simple command as all of its dependencies are
pre-installed. In these cases creating a full application package zip file may
be too much. Similarly, applications artifacts can be organized in a folder
that the developer is continously editing while she is creating/debugging a
package. The need to zip up the package and uploading to FS explicitly can be
eliminated. The following simplifications are designed:
+
+* eliminate the need for a zip package
+* only mandate a metadata file (allow json structure as well)
+* allow reading an application definition from a local folder
+
+## Examples
+
+## A minimal application specified through metadata
+It is assummed that all binary dependencies are installed on the host machines.
+
+### Application specification
+**metainfo.json**
+
+ {
+ "schemaVersion": "2.1",
+ "application": {
+ "name": "MEMCACHED",
+ "components": [
+ {
+ "name": "MEMCACHED",
+ "commands": [
+ {
+ "exec": "/usr/jdk64/jdk1.7.0_67/bin/java -classpath
/usr/myapps/memcached/*:/usr/hadoop/lib/* com.thimbleware.jmemcached.Main"
+ }
+ ]
+ }
+ ]
+ }
+ }
+
+*At this point a resources.json is required but there is a plan to eliminate
it by introducing default resource requirements through slider-client.xml. A
common resources.json file is specified [here](#sample_resources)*
+
+### create
+
+ slider create memcachedmin --metainfo metainfo.json --resources
resources.json
+
+## A minimal application with exports
+It is assummed that all binary dependencies are installed on the host
machines. Application asks Slider to allocate a dynamic port and then export it
to the registry. You can use the same syntax as specified in [specifying
exports](specifying_exports.html).
+
+### Application specification
+**metainfo.json**
+
+ {
+ "schemaVersion": "2.1",
+ "application": {
+ "name": "MEMCACHED",
+ "exportGroups": [
+ {
+ "name": "Servers",
+ "exports": [
+ {
+ "name": "host_port",
+ "value": "${MEMCACHED_HOST}:${site.global.port}"
+ }
+ ]
+ }
+ ],
+ "components": [
+ {
+ "name": "MEMCACHED",
+ "compExports": "Servers-host_port",
+ "commands": [
+ {
+ "exec": "/usr/jdk64/jdk1.7.0_67/bin/java -classpath
/usr/myapps/memcached/*:/usr/hdp/current/hadoop-client/lib/*
com.thimbleware.jmemcached.Main --port={$conf:@//site/global/port}"
+ }
+ ]
+ }
+ ]
+ }
+ }
+
+**appConfig.json**
+The intent to get a dynamically allocated port is specified via appConfig.json
file.
+
+ {
+ "schema": "http://example.org/specification/v2.0.0",
+ "metadata": {
+ },
+ "global": {
+ "site.global.port": "${MEMCACHED.ALLOCATED_PORT}{PER_CONTAINER}"
+ }
+ }
+
+### create
+
+ slider create memcachedmin --metainfo metainfo.json --resources
resources.json --template appConfig.json
+
+
+## A application with libraries
+In this case, the application requires some jars to be uploaded and be made
available locally. The application definition, in this case can be specified as
a folder and *uploaded* jars can be referred to from the app_root. At this
point, the layout is close to the .zip package except you do not need to
explicitly package it up. Slider will package the content and upload it.
+
+### Application specification
+**metainfo.json**
+
+ {
+ "schemaVersion": "2.1",
+ "application": {
+ "name": "MEMCACHED",
+ "exportGroups": [
+ {
+ "name": "Servers",
+ "exports": [
+ {
+ "name": "host_port",
+ "value": "${MEMCACHED_HOST}:${site.global.port}"
+ }
+ ]
+ }
+ ],
+ "components": [
+ {
+ "name": "MEMCACHED",
+ "compExports": "Servers-host_port",
+ "commands": [
+ {
+ "exec": "/usr/jdk64/jdk1.7.0_67/bin/java -classpath
{$conf:@//site/global/app_root}/*:/usr/hdp/current/hadoop-client/lib/*
com.thimbleware.jmemcached.Main --port={$conf:@//site/global/port}"
+ }
+ ]
+ }
+ ],
+ "packages": [
+ {
+ "type": "folder",
+ "name": "files/jmemcached-1.0.0"
+ }
+ ]
+
+ }
+ }
+
+**appConfig.json**
+The intent to get a dynamically allocated port is specified via appConfig.json
file.
+
+ {
+ "schema": "http://example.org/specification/v2.0.0",
+ "metadata": {
+ },
+ "global": {
+ "site.global.port": "${MEMCACHED.ALLOCATED_PORT}{PER_CONTAINER}"
+ }
+ }
+
+**folder contents:**
+
+ ./package
+ ./package/files
+ ./package/files/jmemcached-1.0.0
+ ./package/files/jmemcached-1.0.0/jmemcached-cli-1.0.0.jar
+ ./package/files/jmemcached-1.0.0/jmemcached-core-1.0.0.jar
+ ./metainfo.json
+
+### create
+
+ slider create memcachedjar âappdef /usr/work/package --resources
resources.json --template appConfig.json
+
+
+## <a name="sample_resources"></a> Common resources.json
+Here is the common resources json file for all samples.
+
+**resources.json**
+
+ {
+ "schema" : "http://example.org/specification/v2.0.0",
+ "metadata" : {
+ },
+ "global" : {
+ },
+ "components": {
+ "slider-appmaster": {
+ },
+ "MEMCACHED": {
+ "yarn.role.priority": "1",
+ "yarn.component.instances": "1",
+ "yarn.memory": "256"
+ }
+ }
+
+