org.apache.hadoop.yarn.api.ApplicationConstants.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.hadoop.yarn.api.ApplicationConstants.java

Source

/**
* 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.
*/

package org.apache.hadoop.yarn.api;

import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceAudience.Private;
import org.apache.hadoop.classification.InterfaceStability.Evolving;
import org.apache.hadoop.classification.InterfaceStability.Unstable;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.util.Shell;

/**
 * This is the API for the applications comprising of constants that YARN sets
 * up for the applications and the containers.
 *
 * TODO: Investigate the semantics and security of each cross-boundary refs.
 */
@Public
@Evolving
public interface ApplicationConstants {

    /**
     * The environment variable for APP_SUBMIT_TIME. Set in AppMaster environment
     * only
     */
    public static final String APP_SUBMIT_TIME_ENV = "APP_SUBMIT_TIME_ENV";

    /**
     * The cache file into which container token is written
     */
    public static final String CONTAINER_TOKEN_FILE_ENV_NAME = UserGroupInformation.HADOOP_TOKEN_FILE_LOCATION;

    /**
     * The environmental variable for APPLICATION_WEB_PROXY_BASE. Set in
     * ApplicationMaster's environment only. This states that for all non-relative
     * web URLs in the app masters web UI what base should they have.
     */
    public static final String APPLICATION_WEB_PROXY_BASE_ENV = "APPLICATION_WEB_PROXY_BASE";

    /**
     * The temporary environmental variable for container log directory. This
     * should be replaced by real container log directory on container launch.
     */
    public static final String LOG_DIR_EXPANSION_VAR = "<LOG_DIR>";

    /**
     * This constant is used to construct class path and it will be replaced with
     * real class path separator(':' for Linux and ';' for Windows) by
     * NodeManager on container launch. User has to use this constant to construct
     * class path if user wants cross-platform practice i.e. submit an application
     * from a Windows client to a Linux/Unix server or vice versa.
     */
    @Public
    @Unstable
    public static final String CLASS_PATH_SEPARATOR = "<CPS>";

    /**
     * The following two constants are used to expand parameter and it will be
     * replaced with real parameter expansion marker ('%' for Windows and '$' for
     * Linux) by NodeManager on container launch. For example: {{VAR}} will be
     * replaced as $VAR on Linux, and %VAR% on Windows. User has to use this
     * constant to construct class path if user wants cross-platform practice i.e.
     * submit an application from a Windows client to a Linux/Unix server or vice
     * versa.
     */
    @Public
    @Unstable
    public static final String PARAMETER_EXPANSION_LEFT = "{{";

    /**
     * User has to use this constant to construct class path if user wants
     * cross-platform practice i.e. submit an application from a Windows client to
     * a Linux/Unix server or vice versa.
     */
    @Public
    @Unstable
    public static final String PARAMETER_EXPANSION_RIGHT = "}}";

    public static final String STDERR = "stderr";

    public static final String STDOUT = "stdout";

    /**
     * The type of launch for the container.
     */
    @Public
    @Unstable
    enum ContainerLaunchType {
        LAUNCH, RELAUNCH
    }

    /**
     * Environment for Applications.
     *
     * Some of the environment variables for applications are <em>final</em>
     * i.e. they cannot be modified by the applications.
     */
    public enum Environment {
        /**
         * $USER
         * Final, non-modifiable.
         */
        USER("USER"),

        /**
         * $LOGNAME
         * Final, non-modifiable.
         */
        LOGNAME("LOGNAME"),

        /**
         * $HOME
         * Final, non-modifiable.
         */
        HOME("HOME"),

        /**
         * $PWD
         * Final, non-modifiable.
         */
        PWD("PWD"),

        /**
         * $PATH
         */
        PATH("PATH"),

        /**
         * $SHELL
         */
        SHELL("SHELL"),

        /**
         * $JAVA_HOME
         */
        JAVA_HOME("JAVA_HOME"),

        /**
         * $CLASSPATH
         */
        CLASSPATH("CLASSPATH"),

        /**
         * $APP_CLASSPATH
         */
        APP_CLASSPATH("APP_CLASSPATH"),

        /**
         * $LD_LIBRARY_PATH
         */
        LD_LIBRARY_PATH("LD_LIBRARY_PATH"),

        /**
         * $HADOOP_CONF_DIR
         * Final, non-modifiable.
         */
        HADOOP_CONF_DIR("HADOOP_CONF_DIR"),

        /**
         * $HADOOP_COMMON_HOME
         */
        HADOOP_COMMON_HOME("HADOOP_COMMON_HOME"),

        /**
         * $HADOOP_HDFS_HOME
         */
        HADOOP_HDFS_HOME("HADOOP_HDFS_HOME"),

        /**
         * $MALLOC_ARENA_MAX
         */
        MALLOC_ARENA_MAX("MALLOC_ARENA_MAX"),

        /**
         * $HADOOP_YARN_HOME
         */
        HADOOP_YARN_HOME("HADOOP_YARN_HOME"),

        /**
         * $CLASSPATH_PREPEND_DISTCACHE
         * Private, Windows specific
         */
        @Private
        CLASSPATH_PREPEND_DISTCACHE("CLASSPATH_PREPEND_DISTCACHE"),

        /**
         * $CONTAINER_ID
         * Final, exported by NodeManager and non-modifiable by users.
         */
        CONTAINER_ID("CONTAINER_ID"),

        /**
         * $NM_HOST
         * Final, exported by NodeManager and non-modifiable by users.
         */
        NM_HOST("NM_HOST"),

        /**
         * $NM_HTTP_PORT
         * Final, exported by NodeManager and non-modifiable by users.
         */
        NM_HTTP_PORT("NM_HTTP_PORT"),

        /**
         * $NM_PORT
         * Final, exported by NodeManager and non-modifiable by users.
         */
        NM_PORT("NM_PORT"),

        /**
         * $LOCAL_DIRS
         * Final, exported by NodeManager and non-modifiable by users.
         */
        LOCAL_DIRS("LOCAL_DIRS"),

        /**
         * $LOCAL_USER_DIRS
         * Final, exported by NodeManager and non-modifiable by users.
         */
        LOCAL_USER_DIRS("LOCAL_USER_DIRS"),

        /**
         * $LOG_DIRS
         * Final, exported by NodeManager and non-modifiable by users.
         * Comma separate list of directories that the container should use for
         * logging.
         */
        LOG_DIRS("LOG_DIRS"),

        /**
         * $YARN_CONTAINER_RUNTIME_DOCKER_RUN_OVERRIDE_DISABLE
         * Final, Docker run support ENTRY_POINT.
         */
        YARN_CONTAINER_RUNTIME_DOCKER_RUN_OVERRIDE_DISABLE("YARN_CONTAINER_RUNTIME_DOCKER_RUN_OVERRIDE_DISABLE");

        private final String variable;

        private Environment(String variable) {
            this.variable = variable;
        }

        public String key() {
            return variable;
        }

        public String toString() {
            return variable;
        }

        /**
         * Expand the environment variable based on client OS environment variable
         * expansion syntax (e.g. $VAR for Linux and %VAR% for Windows).
         * <p>
         * Note: Use $$() method for cross-platform practice i.e. submit an
         * application from a Windows client to a Linux/Unix server or vice versa.
         * </p>
         * @return expanded environment variable.
         */
        public String $() {
            if (Shell.WINDOWS) {
                return "%" + variable + "%";
            } else {
                return "$" + variable;
            }
        }

        /**
         * Expand the environment variable in platform-agnostic syntax. The
         * parameter expansion marker "{{VAR}}" will be replaced with real parameter
         * expansion marker ('%' for Windows and '$' for Linux) by NodeManager on
         * container launch. For example: {{VAR}} will be replaced as $VAR on Linux,
         * and %VAR% on Windows.
         * @return expanded environment variable.
         */
        @Public
        @Unstable
        public String $$() {
            return PARAMETER_EXPANSION_LEFT + variable + PARAMETER_EXPANSION_RIGHT;
        }
    }
}