daaca14c16
Let's give this another go using a version of Hive that shades its JLine dependency. Author: Prashant Sharma <prashant.s@imaginea.com> Author: Patrick Wendell <pwendell@gmail.com> Closes #3159 from pwendell/scala-2.11-prashant and squashes the following commits: e93aa3e [Patrick Wendell] Restoring -Phive-thriftserver profile and cleaning up build script. f65d17d [Patrick Wendell] Fixing build issue due to merge conflict a8c41eb [Patrick Wendell] Reverting dev/run-tests back to master state. 7a6eb18 [Patrick Wendell] Merge remote-tracking branch 'apache/master' into scala-2.11-prashant 583aa07 [Prashant Sharma] REVERT ME: removed hive thirftserver 3680e58 [Prashant Sharma] Revert "REVERT ME: Temporarily removing some Cli tests." 935fb47 [Prashant Sharma] Revert "Fixed by disabling a few tests temporarily." 925e90f [Prashant Sharma] Fixed by disabling a few tests temporarily. 2fffed3 [Prashant Sharma] Exclude groovy from sbt build, and also provide a way for such instances in future. 8bd4e40 [Prashant Sharma] Switched to gmaven plus, it fixes random failures observer with its predecessor gmaven. 5272ce5 [Prashant Sharma] SPARK_SCALA_VERSION related bugs. 2121071 [Patrick Wendell] Migrating version detection to PySpark b1ed44d [Patrick Wendell] REVERT ME: Temporarily removing some Cli tests. 1743a73 [Patrick Wendell] Removing decimal test that doesn't work with Scala 2.11 f5cad4e [Patrick Wendell] Add Scala 2.11 docs 210d7e1 [Patrick Wendell] Revert "Testing new Hive version with shaded jline" 48518ce [Patrick Wendell] Remove association of Hive and Thriftserver profiles. e9d0a06 [Patrick Wendell] Revert "Enable thritfserver for Scala 2.10 only" 67ec364 [Patrick Wendell] Guard building of thriftserver around Scala 2.10 check 8502c23 [Patrick Wendell] Enable thritfserver for Scala 2.10 only e22b104 [Patrick Wendell] Small fix in pom file ec402ab [Patrick Wendell] Various fixes 0be5a9d [Patrick Wendell] Testing new Hive version with shaded jline 4eaec65 [Prashant Sharma] Changed scripts to ignore target. 5167bea [Prashant Sharma] small correction a4fcac6 [Prashant Sharma] Run against scala 2.11 on jenkins. 80285f4 [Prashant Sharma] MAven equivalent of setting spark.executor.extraClasspath during tests. 034b369 [Prashant Sharma] Setting test jars on executor classpath during tests from sbt. d4874cb [Prashant Sharma] Fixed Python Runner suite. null check should be first case in scala 2.11. 6f50f13 [Prashant Sharma] Fixed build after rebasing with master. We should use ${scala.binary.version} instead of just 2.10 e56ca9d [Prashant Sharma] Print an error if build for 2.10 and 2.11 is spotted. 937c0b8 [Prashant Sharma] SCALA_VERSION -> SPARK_SCALA_VERSION cb059b0 [Prashant Sharma] Code review 0476e5e [Prashant Sharma] Scala 2.11 support with repl and all build changes.
190 lines
6.6 KiB
Bash
Executable file
190 lines
6.6 KiB
Bash
Executable file
#!/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.
|
|
#
|
|
|
|
# NOTE: Any changes to this file must be reflected in SparkSubmitDriverBootstrapper.scala!
|
|
|
|
cygwin=false
|
|
case "`uname`" in
|
|
CYGWIN*) cygwin=true;;
|
|
esac
|
|
|
|
# Figure out where Spark is installed
|
|
FWDIR="$(cd "`dirname "$0"`"/..; pwd)"
|
|
|
|
# Export this as SPARK_HOME
|
|
export SPARK_HOME="$FWDIR"
|
|
|
|
. "$FWDIR"/bin/load-spark-env.sh
|
|
|
|
if [ -z "$1" ]; then
|
|
echo "Usage: spark-class <class> [<args>]" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -n "$SPARK_MEM" ]; then
|
|
echo -e "Warning: SPARK_MEM is deprecated, please use a more specific config option" 1>&2
|
|
echo -e "(e.g., spark.executor.memory or spark.driver.memory)." 1>&2
|
|
fi
|
|
|
|
# Use SPARK_MEM or 512m as the default memory, to be overridden by specific options
|
|
DEFAULT_MEM=${SPARK_MEM:-512m}
|
|
|
|
SPARK_DAEMON_JAVA_OPTS="$SPARK_DAEMON_JAVA_OPTS -Dspark.akka.logLifecycleEvents=true"
|
|
|
|
# Add java opts and memory settings for master, worker, history server, executors, and repl.
|
|
case "$1" in
|
|
# Master, Worker, and HistoryServer use SPARK_DAEMON_JAVA_OPTS (and specific opts) + SPARK_DAEMON_MEMORY.
|
|
'org.apache.spark.deploy.master.Master')
|
|
OUR_JAVA_OPTS="$SPARK_DAEMON_JAVA_OPTS $SPARK_MASTER_OPTS"
|
|
OUR_JAVA_MEM=${SPARK_DAEMON_MEMORY:-$DEFAULT_MEM}
|
|
;;
|
|
'org.apache.spark.deploy.worker.Worker')
|
|
OUR_JAVA_OPTS="$SPARK_DAEMON_JAVA_OPTS $SPARK_WORKER_OPTS"
|
|
OUR_JAVA_MEM=${SPARK_DAEMON_MEMORY:-$DEFAULT_MEM}
|
|
;;
|
|
'org.apache.spark.deploy.history.HistoryServer')
|
|
OUR_JAVA_OPTS="$SPARK_DAEMON_JAVA_OPTS $SPARK_HISTORY_OPTS"
|
|
OUR_JAVA_MEM=${SPARK_DAEMON_MEMORY:-$DEFAULT_MEM}
|
|
;;
|
|
|
|
# Executors use SPARK_JAVA_OPTS + SPARK_EXECUTOR_MEMORY.
|
|
'org.apache.spark.executor.CoarseGrainedExecutorBackend')
|
|
OUR_JAVA_OPTS="$SPARK_JAVA_OPTS $SPARK_EXECUTOR_OPTS"
|
|
OUR_JAVA_MEM=${SPARK_EXECUTOR_MEMORY:-$DEFAULT_MEM}
|
|
;;
|
|
'org.apache.spark.executor.MesosExecutorBackend')
|
|
OUR_JAVA_OPTS="$SPARK_JAVA_OPTS $SPARK_EXECUTOR_OPTS"
|
|
OUR_JAVA_MEM=${SPARK_EXECUTOR_MEMORY:-$DEFAULT_MEM}
|
|
;;
|
|
|
|
# Spark submit uses SPARK_JAVA_OPTS + SPARK_SUBMIT_OPTS +
|
|
# SPARK_DRIVER_MEMORY + SPARK_SUBMIT_DRIVER_MEMORY.
|
|
'org.apache.spark.deploy.SparkSubmit')
|
|
OUR_JAVA_OPTS="$SPARK_JAVA_OPTS $SPARK_SUBMIT_OPTS"
|
|
OUR_JAVA_MEM=${SPARK_DRIVER_MEMORY:-$DEFAULT_MEM}
|
|
if [ -n "$SPARK_SUBMIT_LIBRARY_PATH" ]; then
|
|
if [[ $OSTYPE == darwin* ]]; then
|
|
export DYLD_LIBRARY_PATH="$SPARK_SUBMIT_LIBRARY_PATH:$DYLD_LIBRARY_PATH"
|
|
else
|
|
export LD_LIBRARY_PATH="$SPARK_SUBMIT_LIBRARY_PATH:$LD_LIBRARY_PATH"
|
|
fi
|
|
fi
|
|
if [ -n "$SPARK_SUBMIT_DRIVER_MEMORY" ]; then
|
|
OUR_JAVA_MEM="$SPARK_SUBMIT_DRIVER_MEMORY"
|
|
fi
|
|
;;
|
|
|
|
*)
|
|
OUR_JAVA_OPTS="$SPARK_JAVA_OPTS"
|
|
OUR_JAVA_MEM=${SPARK_DRIVER_MEMORY:-$DEFAULT_MEM}
|
|
;;
|
|
esac
|
|
|
|
# Find the java binary
|
|
if [ -n "${JAVA_HOME}" ]; then
|
|
RUNNER="${JAVA_HOME}/bin/java"
|
|
else
|
|
if [ `command -v java` ]; then
|
|
RUNNER="java"
|
|
else
|
|
echo "JAVA_HOME is not set" >&2
|
|
exit 1
|
|
fi
|
|
fi
|
|
JAVA_VERSION=$("$RUNNER" -version 2>&1 | grep 'version' | sed 's/.* version "\(.*\)\.\(.*\)\..*"/\1\2/; 1q')
|
|
|
|
# Set JAVA_OPTS to be able to load native libraries and to set heap size
|
|
if [ "$JAVA_VERSION" -ge 18 ]; then
|
|
JAVA_OPTS="$OUR_JAVA_OPTS"
|
|
else
|
|
JAVA_OPTS="-XX:MaxPermSize=128m $OUR_JAVA_OPTS"
|
|
fi
|
|
JAVA_OPTS="$JAVA_OPTS -Xms$OUR_JAVA_MEM -Xmx$OUR_JAVA_MEM"
|
|
|
|
# Load extra JAVA_OPTS from conf/java-opts, if it exists
|
|
if [ -e "$FWDIR/conf/java-opts" ] ; then
|
|
JAVA_OPTS="$JAVA_OPTS `cat "$FWDIR"/conf/java-opts`"
|
|
fi
|
|
|
|
# Attention: when changing the way the JAVA_OPTS are assembled, the change must be reflected in CommandUtils.scala!
|
|
|
|
TOOLS_DIR="$FWDIR"/tools
|
|
SPARK_TOOLS_JAR=""
|
|
if [ -e "$TOOLS_DIR"/target/scala-$SPARK_SCALA_VERSION/spark-tools*[0-9Tg].jar ]; then
|
|
# Use the JAR from the SBT build
|
|
export SPARK_TOOLS_JAR="`ls "$TOOLS_DIR"/target/scala-$SPARK_SCALA_VERSION/spark-tools*[0-9Tg].jar`"
|
|
fi
|
|
if [ -e "$TOOLS_DIR"/target/spark-tools*[0-9Tg].jar ]; then
|
|
# Use the JAR from the Maven build
|
|
# TODO: this also needs to become an assembly!
|
|
export SPARK_TOOLS_JAR="`ls "$TOOLS_DIR"/target/spark-tools*[0-9Tg].jar`"
|
|
fi
|
|
|
|
# Compute classpath using external script
|
|
classpath_output=$("$FWDIR"/bin/compute-classpath.sh)
|
|
if [[ "$?" != "0" ]]; then
|
|
echo "$classpath_output"
|
|
exit 1
|
|
else
|
|
CLASSPATH="$classpath_output"
|
|
fi
|
|
|
|
if [[ "$1" =~ org.apache.spark.tools.* ]]; then
|
|
if test -z "$SPARK_TOOLS_JAR"; then
|
|
echo "Failed to find Spark Tools Jar in $FWDIR/tools/target/scala-$SPARK_SCALA_VERSION/" 1>&2
|
|
echo "You need to build Spark before running $1." 1>&2
|
|
exit 1
|
|
fi
|
|
CLASSPATH="$CLASSPATH:$SPARK_TOOLS_JAR"
|
|
fi
|
|
|
|
if $cygwin; then
|
|
CLASSPATH="`cygpath -wp "$CLASSPATH"`"
|
|
if [ "$1" == "org.apache.spark.tools.JavaAPICompletenessChecker" ]; then
|
|
export SPARK_TOOLS_JAR="`cygpath -w "$SPARK_TOOLS_JAR"`"
|
|
fi
|
|
fi
|
|
export CLASSPATH
|
|
|
|
# In Spark submit client mode, the driver is launched in the same JVM as Spark submit itself.
|
|
# Here we must parse the properties file for relevant "spark.driver.*" configs before launching
|
|
# the driver JVM itself. Instead of handling this complexity in Bash, we launch a separate JVM
|
|
# to prepare the launch environment of this driver JVM.
|
|
|
|
if [ -n "$SPARK_SUBMIT_BOOTSTRAP_DRIVER" ]; then
|
|
# This is used only if the properties file actually contains these special configs
|
|
# Export the environment variables needed by SparkSubmitDriverBootstrapper
|
|
export RUNNER
|
|
export CLASSPATH
|
|
export JAVA_OPTS
|
|
export OUR_JAVA_MEM
|
|
export SPARK_CLASS=1
|
|
shift # Ignore main class (org.apache.spark.deploy.SparkSubmit) and use our own
|
|
exec "$RUNNER" org.apache.spark.deploy.SparkSubmitDriverBootstrapper "$@"
|
|
else
|
|
# Note: The format of this command is closely echoed in SparkSubmitDriverBootstrapper.scala
|
|
if [ -n "$SPARK_PRINT_LAUNCH_COMMAND" ]; then
|
|
echo -n "Spark Command: " 1>&2
|
|
echo "$RUNNER" -cp "$CLASSPATH" $JAVA_OPTS "$@" 1>&2
|
|
echo -e "========================================\n" 1>&2
|
|
fi
|
|
exec "$RUNNER" -cp "$CLASSPATH" $JAVA_OPTS "$@"
|
|
fi
|
|
|