blob: 392895e1d23ca330be6b6d9befca4e42f71ee742 [file] [log] [blame]
#!/bin/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.
#
# Support functions
echoerr() { echo "$@" 1>&2; }
real_dir() {
SOURCE="${1:-${BASH_SOURCE[0]}}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
SOURCE_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$SOURCE_DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
SOURCE_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
echo "$SOURCE_DIR"
}
script_dir=$(real_dir "${BASH_SOURCE[0]}")
# Create missing clirc file for current user
if [ ! -f "${HOME}/.dt/clirc" ]; then
mkdir -p "${HOME}/.dt"
cat >${HOME}/.dt/clirc <<EOF
# User editable apex settings
EOF
fi
# Load DataTorrent environment settings
for conf_dir in "${script_dir}/../conf" "$HOME/.dt"; do
[[ -f "${conf_dir}/dt-env.sh" ]] && . "${conf_dir}/dt-env.sh"
done
# In development mode, if configuration files are not found, locate DT_HADOOP manually
if [ -z "${DT_HADOOP}" ]; then
HADOOP_SEARCH_PATH="${HADOOP_PREFIX}/bin:${HADOOP_HOME}/bin:${PATH}:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:."
export DT_HADOOP=`PATH=${HADOOP_SEARCH_PATH} && command -v hadoop 2>/dev/null`
fi
if [ "$DT_CLIENT_OPTS" = "" ]; then
# DT_CLIENT_OPTS="-Xmx1024m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled"
DT_CLIENT_OPTS="-Xmx1024m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled"
fi
export HADOOP_CLIENT_OPTS="$DT_CLIENT_OPTS"
BUILD_DIR="$( dirname "$0" )/../../../target"
if [ -z "$DT_HADOOP" ]; then
MVN_GENERATED_PATH="$BUILD_DIR/mvn-generated-runtime-classpath"
else
MVN_GENERATED_PATH="$BUILD_DIR/mvn-generated-runtime-classpath-no-hadoop"
fi
if [ -f "$MVN_GENERATED_PATH" ]; then
# development launch mode
DT_CORE_JAR="$BUILD_DIR/apex-engine.jar"
if [ ! -f "$DT_CORE_JAR" ]; then
echoerr "Error: Cannot find $DT_CORE_JAR";
exit 1;
fi
DT_CLASSPATH="$DT_CLASSPATH:$DT_CORE_JAR"
DT_CLASSPATH=$DT_CLASSPATH:`cat $MVN_GENERATED_PATH`
else
# running from installation
if [ -z "$DT_HADOOP" ]; then
echoerr "Hadoop installation not found. Please include hadoop in PATH."
exit 1;
fi
BASEDIR=$( cd ${script_dir}/..; pwd -P )
DT_CLASSPATH=$BASEDIR/lib'/*'":${DT_CLASSPATH}"
fi
if [ -n "$DT_CLASSPATH" ]; then
if [ -z "$HADOOP_CLASSPATH" ]; then
export HADOOP_CLASSPATH="$DT_CLASSPATH"
else
export HADOOP_CLASSPATH="$HADOOP_CLASSPATH:$DT_CLASSPATH"
fi
fi
if [ ! -x "$DT_HADOOP" ]; then
echoerr "Warning: hadoop executable not found. Running standalone with ${DT_JAVA:-java}."
export CLASSPATH=$DT_CLASSPATH
"${DT_JAVA:-java}" $DT_CLIENT_OPTS com.datatorrent.stram.cli.ApexCli "$@"
else
export HADOOP_USER_CLASSPATH_FIRST=1
# remove hadoop and duplicate slf4j binding (bash replace is too slow)
export HADOOP_CLASSPATH=$(echo -n "$HADOOP_CLASSPATH" | tr ":" "\n" | sed "/slf4j-log4j/d" | sed "/org\/apache\/hadoop/d" | tr "\n" ":")
"$DT_HADOOP" com.datatorrent.stram.cli.ApexCli "$@"
fi