224 lines
8.6 KiB
Bash
224 lines
8.6 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# 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.
|
|
|
|
function hadoop_usage
|
|
{
|
|
echo "Usage: yarn [--config confdir] [COMMAND | CLASSNAME]"
|
|
echo " CLASSNAME run the class named CLASSNAME"
|
|
echo " or"
|
|
echo " where COMMAND is one of:"
|
|
echo " application prints application(s) report/kill application"
|
|
echo " applicationattempt prints applicationattempt(s) report"
|
|
echo " classpath prints the class path needed to get the"
|
|
echo " Hadoop jar and the required libraries"
|
|
echo " container prints container(s) report"
|
|
echo " daemonlog get/set the log level for each daemon"
|
|
echo " jar <jar> run a jar file"
|
|
echo " logs dump container logs"
|
|
echo " node prints node report(s)"
|
|
echo " nodemanager run a nodemanager on each slave"
|
|
echo " proxyserver run the web app proxy server"
|
|
echo " queue prints queue information"
|
|
echo " resourcemanager run the ResourceManager"
|
|
echo " resourcemanager -format-state-store deletes the RMStateStore"
|
|
echo " rmadmin admin tools"
|
|
echo " scmadmin SharedCacheManager admin tools"
|
|
echo " sharedcachemanager run the SharedCacheManager daemon"
|
|
echo " timelineserver run the timeline server"
|
|
echo " version print the version"
|
|
echo ""
|
|
echo "Most commands print help when invoked w/o parameters."
|
|
}
|
|
|
|
|
|
# let's locate libexec...
|
|
if [[ -n "${HADOOP_PREFIX}" ]]; then
|
|
DEFAULT_LIBEXEC_DIR="${HADOOP_PREFIX}/libexec"
|
|
else
|
|
this="${BASH_SOURCE-$0}"
|
|
bin=$(cd -P -- "$(dirname -- "${this}")" >/dev/null && pwd -P)
|
|
DEFAULT_LIBEXEC_DIR="${bin}/../libexec"
|
|
fi
|
|
|
|
HADOOP_LIBEXEC_DIR="${HADOOP_LIBEXEC_DIR:-$DEFAULT_LIBEXEC_DIR}"
|
|
# shellcheck disable=SC2034
|
|
HADOOP_NEW_CONFIG=true
|
|
if [[ -f "${HADOOP_LIBEXEC_DIR}/yarn-config.sh" ]]; then
|
|
. "${HADOOP_LIBEXEC_DIR}/yarn-config.sh"
|
|
else
|
|
echo "ERROR: Cannot execute ${HADOOP_LIBEXEC_DIR}/yarn-config.sh." 2>&1
|
|
exit 1
|
|
fi
|
|
|
|
# if no args specified, show usage
|
|
if [[ $# = 0 ]]; then
|
|
hadoop_exit_with_usage 1
|
|
fi
|
|
|
|
# get arguments
|
|
COMMAND=$1
|
|
shift
|
|
|
|
case "${COMMAND}" in
|
|
application|applicationattempt|container)
|
|
CLASS=org.apache.hadoop.yarn.client.cli.ApplicationCLI
|
|
hadoop_debug "Append YARN_CLIENT_OPTS onto HADOOP_OPTS"
|
|
HADOOP_OPTS="${HADOOP_OPTS} ${YARN_CLIENT_OPTS}"
|
|
set -- "${COMMAND}" "$@"
|
|
;;
|
|
classpath)
|
|
hadoop_do_classpath_subcommand "$@"
|
|
;;
|
|
daemonlog)
|
|
CLASS=org.apache.hadoop.log.LogLevel
|
|
hadoop_debug "Append YARN_CLIENT_OPTS onto HADOOP_OPTS"
|
|
HADOOP_OPTS="${HADOOP_OPTS} ${YARN_CLIENT_OPTS}"
|
|
;;
|
|
jar)
|
|
CLASS=org.apache.hadoop.util.RunJar
|
|
hadoop_debug "Append YARN_CLIENT_OPTS onto HADOOP_OPTS"
|
|
HADOOP_OPTS="${HADOOP_OPTS} ${YARN_CLIENT_OPTS}"
|
|
;;
|
|
historyserver)
|
|
supportdaemonization="true"
|
|
echo "DEPRECATED: Use of this command to start the timeline server is deprecated." 1>&2
|
|
echo "Instead use the timelineserver command for it." 1>&2
|
|
echo "Starting the History Server anyway..." 1>&2
|
|
CLASS='org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryServer'
|
|
;;
|
|
logs)
|
|
CLASS=org.apache.hadoop.yarn.client.cli.LogsCLI
|
|
hadoop_debug "Append YARN_CLIENT_OPTS onto HADOOP_OPTS"
|
|
HADOOP_OPTS="${HADOOP_OPTS} ${YARN_CLIENT_OPTS}"
|
|
;;
|
|
node)
|
|
CLASS=org.apache.hadoop.yarn.client.cli.NodeCLI
|
|
hadoop_debug "Append YARN_CLIENT_OPTS onto HADOOP_OPTS"
|
|
HADOOP_OPTS="${HADOOP_OPTS} ${YARN_CLIENT_OPTS}"
|
|
;;
|
|
nodemanager)
|
|
supportdaemonization="true"
|
|
CLASS='org.apache.hadoop.yarn.server.nodemanager.NodeManager'
|
|
hadoop_debug "Append YARN_NODEMANAGER_OPTS onto HADOOP_OPTS"
|
|
HADOOP_OPTS="${HADOOP_OPTS} ${YARN_NODEMANAGER_OPTS}"
|
|
# Backwards compatibility
|
|
if [[ -n "${YARN_NODEMANAGER_HEAPSIZE}" ]]; then
|
|
HADOOP_HEAPSIZE_MAX="${YARN_NODEMANAGER_HEAPSIZE}"
|
|
fi
|
|
;;
|
|
proxyserver)
|
|
supportdaemonization="true"
|
|
CLASS='org.apache.hadoop.yarn.server.webproxy.WebAppProxyServer'
|
|
hadoop_debug "Append YARN_PROXYSERVER_OPTS onto HADOOP_OPTS"
|
|
HADOOP_OPTS="${HADOOP_OPTS} ${YARN_PROXYSERVER_OPTS}"
|
|
# Backwards compatibility
|
|
if [[ -n "${YARN_PROXYSERVER_HEAPSIZE}" ]]; then
|
|
HADOOP_HEAPSIZE_MAX="${YARN_PROXYSERVER_HEAPSIZE}"
|
|
fi
|
|
;;
|
|
queue)
|
|
CLASS=org.apache.hadoop.yarn.client.cli.QueueCLI
|
|
hadoop_debug "Append YARN_CLIENT_OPTS onto HADOOP_OPTS"
|
|
HADOOP_OPTS="${HADOOP_OPTS} ${YARN_CLIENT_OPTS}"
|
|
;;
|
|
resourcemanager)
|
|
supportdaemonization="true"
|
|
CLASS='org.apache.hadoop.yarn.server.resourcemanager.ResourceManager'
|
|
HADOOP_OPTS="${HADOOP_OPTS} ${YARN_RESOURCEMANAGER_OPTS}"
|
|
hadoop_debug "Append YARN_RESOURCEMANAGER_OPTS onto HADOOP_OPTS"
|
|
# Backwards compatibility
|
|
if [[ -n "${YARN_RESOURCEMANAGER_HEAPSIZE}" ]]; then
|
|
HADOOP_HEAPSIZE_MAX="${YARN_RESOURCEMANAGER_HEAPSIZE}"
|
|
fi
|
|
;;
|
|
rmadmin)
|
|
CLASS='org.apache.hadoop.yarn.client.cli.RMAdminCLI'
|
|
hadoop_debug "Append YARN_CLIENT_OPTS onto HADOOP_OPTS"
|
|
HADOOP_OPTS="${HADOOP_OPTS} ${YARN_CLIENT_OPTS}"
|
|
;;
|
|
scmadmin)
|
|
CLASS='org.apache.hadoop.yarn.client.SCMAdmin'
|
|
hadoop_debug "Append YARN_CLIENT_OPTS onto HADOOP_OPTS"
|
|
HADOOP_OPTS="${HADOOP_OPTS} ${YARN_CLIENT_OPTS}"
|
|
;;
|
|
sharedcachemanager)
|
|
supportdaemonization="true"
|
|
CLASS='org.apache.hadoop.yarn.server.sharedcachemanager.SharedCacheManager'
|
|
hadoop_debug "Append YARN_SHAREDCACHEMANAGER_OPTS onto HADOOP_OPTS"
|
|
HADOOP_OPTS="${HADOOP_OPTS} ${YARN_SHAREDCACHEMANAGER_OPTS}"
|
|
;;
|
|
timelineserver)
|
|
supportdaemonization="true"
|
|
CLASS='org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryServer'
|
|
hadoop_debug "Append YARN_TIMELINESERVER_OPTS onto HADOOP_OPTS"
|
|
HADOOP_OPTS="${HADOOP_OPTS} ${YARN_TIMELINESERVER_OPTS}"
|
|
# Backwards compatibility
|
|
if [[ -n "${YARN_TIMELINESERVER_HEAPSIZE}" ]]; then
|
|
HADOOP_HEAPSIZE_MAX="${YARN_TIMELINESERVER_HEAPSIZE}"
|
|
fi
|
|
;;
|
|
version)
|
|
CLASS=org.apache.hadoop.util.VersionInfo
|
|
hadoop_debug "Append YARN_CLIENT_OPTS onto HADOOP_OPTS"
|
|
HADOOP_OPTS="${HADOOP_OPTS} ${YARN_CLIENT_OPTS}"
|
|
;;
|
|
*)
|
|
CLASS="${COMMAND}"
|
|
if ! hadoop_validate_classname "${CLASS}"; then
|
|
hadoop_exit_with_usage 1
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
hadoop_verify_user "${COMMAND}"
|
|
|
|
daemon_outfile="${HADOOP_LOG_DIR}/hadoop-${HADOOP_IDENT_STRING}-${COMMAND}-${HOSTNAME}.out"
|
|
daemon_pidfile="${HADOOP_PID_DIR}/hadoop-${HADOOP_IDENT_STRING}-${COMMAND}.pid"
|
|
|
|
if [[ "${HADOOP_DAEMON_MODE}" != "default" ]]; then
|
|
# shellcheck disable=SC2034
|
|
HADOOP_ROOT_LOGGER="${HADOOP_DAEMON_ROOT_LOGGER}"
|
|
HADOOP_LOGFILE="hadoop-${HADOOP_IDENT_STRING}-${COMMAND}-${HOSTNAME}.log"
|
|
fi
|
|
|
|
# Add YARN custom options to comamnd line in case someone actaully
|
|
# used these.
|
|
YARN_LOG_DIR=$HADOOP_LOG_DIR
|
|
hadoop_translate_cygwin_path YARN_LOG_DIR
|
|
hadoop_add_param HADOOP_OPTS yarn.log.dir "-Dyarn.log.dir=${YARN_LOG_DIR}"
|
|
hadoop_add_param HADOOP_OPTS yarn.log.file "-Dyarn.log.file=${HADOOP_LOGFILE}"
|
|
YARN_HOME_DIR=$HADOOP_YARN_HOME
|
|
hadoop_translate_cygwin_path YARN_HOME_DIR
|
|
hadoop_add_param HADOOP_OPTS yarn.home.dir "-Dyarn.home.dir=${YARN_HOME_DIR}"
|
|
hadoop_add_param HADOOP_OPTS yarn.root.logger "-Dyarn.root.logger=${HADOOP_ROOT_LOGGER:-INFO,console}"
|
|
|
|
hadoop_finalize
|
|
|
|
if [[ -n "${supportdaemonization}" ]]; then
|
|
if [[ -n "${secure_service}" ]]; then
|
|
hadoop_secure_daemon_handler "${HADOOP_DAEMON_MODE}" "${COMMAND}" \
|
|
"${CLASS}" "${daemon_pidfile}" "${daemon_outfile}" \
|
|
"${priv_pidfile}" "${priv_outfile}" "${priv_errfile}" "$@"
|
|
else
|
|
hadoop_daemon_handler "${HADOOP_DAEMON_MODE}" "${COMMAND}" "${CLASS}" \
|
|
"${daemon_pidfile}" "${daemon_outfile}" "$@"
|
|
fi
|
|
exit $?
|
|
else
|
|
hadoop_java_exec "${COMMAND}" "${CLASS}" "$@"
|
|
fi
|