Skip to content

Instantly share code, notes, and snippets.

@addisonj
Last active June 24, 2016 20:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save addisonj/42b4f0f9f4700e10a9092e99560667d7 to your computer and use it in GitHub Desktop.
Save addisonj/42b4f0f9f4700e10a9092e99560667d7 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Script to start the job manager
# args: <work dir for context> <cluster address> [proxy_user]
set -e
get_abs_script_path() {
pushd . >/dev/null
cd $(dirname $0)
appdir=$(pwd)
popd >/dev/null
}
get_abs_script_path
. $appdir/setenv.sh
sjsJar=${SJS_JAR_LOC:-$appdir/spark-job-server.jar}
if [ -n "$ADD_SPARK_CONF" ]; then
IFS=', ' read -r -a sparkOpts <<< "$ADD_SPARK_CONF"
addConf=""
for conf in "${sparkOpts[@]}"; do
addConf="${addConf} --conf ${conf} "
done
else
addConf=""
fi
# Override logging options to provide per-context logging
LOGGING_OPTS="-Dlog4j.configuration=file:$appdir/log4j-server.properties -DLOG_DIR=$1"
GC_OPTS="-XX:+UseConcMarkSweepGC \
-verbose:gc -XX:+PrintGCTimeStamps -Xloggc:$appdir/gc.out \
-XX:MaxPermSize=512m \
-XX:+CMSClassUnloadingEnabled "
JAVA_OPTS="-XX:MaxDirectMemorySize=$MAX_DIRECT_MEMORY \
-XX:+HeapDumpOnOutOfMemoryError -Djava.net.preferIPv4Stack=true"
MAIN="spark.jobserver.JobManager"
if [ "$CLUSTER_MODE" = true ]; then
clusterOpts="--master $SPARK_MASTER --deploy-mode cluster --supervise"
else
clusterOpts=""
fi
if [ ! -z $3 ]; then
proxyUser="--proxy-user $3"
else
proxyUser=""
fi
cmd='$SPARK_HOME/bin/spark-submit --class $MAIN --driver-memory $JOBSERVER_MEMORY \
--conf \"spark.executor.extraJavaOptions=$LOGGING_OPTS\" \
--files $1/context.conf,$conffile \
$addConf \
$clusterOpts \
$proxyUser \
--driver-java-options \"$GC_OPTS $JAVA_OPTS $LOGGING_OPTS $CONFIG_OVERRIDES\" \
$sjsJar \$MESOS_SANDBOX akka.tcp://JobServer@${HOST}:41999 docker.conf'
eval "echo $cmd"
eval $cmd &
# Docker environment vars
# NOTE: only static vars not intended to be changed by users should appear here, because
# this file gets sourced in the middle of server_start.sh, so it will override
# any env vars set in the docker run command line.
PIDFILE=spark-jobserver.pid
SPARK_HOME=/spark
SPARK_CONF_DIR=$SPARK_HOME/conf
# For Docker, always run start script as foreground
JOBSERVER_FG=1
JOBSERVER_MEMORY=2G
SJS_JAR_LOC=http://.../sjs/spark-job-server.jar
ADD_SPARK_CONF="spark.mesos.coarse=true, spark.mesos.executor.docker.image=mesosphere/spark:1.0.0-1.6.1-2"
CLUSTER_MODE=true
MAX_DIRECT_MEMORY=2G
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment