blob: e719380929b5e3edd36481fe731a9385c86519e6 [file] [log] [blame]
#! /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.
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do
bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$bin/$SOURCE"
done
# Set up variables needed by fluo-env.sh
export bin="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
export basedir="$( cd -P ${bin}/.. && pwd )"
export conf="$basedir/conf"
export lib="$basedir/lib"
export cmd="$1"
case "$cmd" in
start) export app="$2" ;;
esac
export FLUO_YARN_VERSION=${project.version}
if [ ! -f "$conf/fluo-yarn-env.sh" ]; then
echo "fluo-yarn-env.sh must exist in $conf"
exit 1
fi
source "$conf/fluo-yarn-env.sh"
export CLASSPATH=$LAUNCHER_CLASSPATH
# stop if any command fails
set -e
function print_usage {
echo -e "Usage: fluo-yarn <command> (<argument> ...)\n"
echo -e "Possible commands:\n"
echo " classpath Prints the classpath setup by fluo-yarn-env.sh"
echo " start <app> <yarnProps> Starts Fluo <app> in YARN using <yarnProps>"
echo " version Prints the version of Fluo YARN launcher"
echo " "
exit 1
}
function build_bundled_jar {
app_dir=$lib/apps/$app
mkdir -p "$app_dir/lib"
$FLUO_HOME/bin/fluo get-jars -a "$app" -d "$app_dir/lib"
fluo_classpath=$FLUO_CLASSPATH
IFS=':' read -ra ADDR <<< "$fluo_classpath"
for cpentry in "${ADDR[@]}"; do
if [[ $cpentry = *\* ]]; then
for f in $cpentry; do
if [[ -f $f ]]; then
cp "$f" "$app_dir/lib/"
fi
done
else
cp "$cpentry" "$app_dir/lib/"
fi
done
bundled_jar=fluo-app-${app}.jar
pushd "$app_dir" > /dev/null
jar cf $bundled_jar lib
popd > /dev/null
}
case "$1" in
start)
if [ ! -f "$FLUO_CONN_PROPS" ]; then
echo "Fluo connection properties file '$FLUO_CONN_PROPS' does not exist"
exit 1
fi
if [ ! -f "$3" ]; then
echo "The file argument given for <yarnProps> does not exist at $3"
print_usage
exit 1
fi
app_status=$($FLUO_HOME/bin/fluo status -a $app)
if [[ "$app_status" == "RUNNING" ]]; then
echo "Fluo appplication '$app' is already running!"
exit 1
fi
build_bundled_jar
java org.apache.fluo.yarn.core.FluoYarnLauncher "$FLUO_CONN_PROPS" "$3" "$conf/log4j.properties" "$app" "$app_dir/$bundled_jar"
;;
classpath)
echo "$CLASSPATH"
;;
version)
echo "$FLUO_YARN_VERSION"
;;
*)
print_usage
esac