121f9338ce
Launcher is implemented as a Java application and sometimes I'd like to apply Java options. One situation I have met is the time I try to attach debugger to Launcher. Launcher is launched from bin/spark-class but there is no room to apply Java options. ``` build_command() { "$RUNNER" -Xmx128m -cp "$LAUNCH_CLASSPATH" org.apache.spark.launcher.Main "$" printf "%d\0" $? } ``` Considering that it's not so many times to apply Java options to Launcher, one compromise would just modify spark-class by user like as follows. ``` build_command() { "$RUNNER" -Xmx128m $SPARK_LAUNCHER_OPTS -cp "$LAUNCH_CLASSPATH" org.apache.spark.launcher.Main "$" printf "%d\0" $? } ``` But it doesn't work when any text related to Java options is output to standard output because whole output is used as command-string for spark-shell and spark-submit in current implementation. One example is jdwp. When apply agentlib option to use jdwp for debug, we will get output like as follows. ``` Listening for transport dt_socket at address: 9876 ``` The output shown above is not a command-string so spark-submit and spark-shell will fail. To enable Java options for Launcher, we need treat command-string and others. I changed launcher/Main.java and bin/spark-class to print separator-character and treat it. ## How was this patch tested? Tested manually using Spark Shell with / without LAUNCHER_JAVA_OPTIONS like as follows. ``` SPARK_LAUNCHER_OPTS="-agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:9876,server=y" bin/spark-shell ``` Closes #25265 from sarutak/add-spark-launcher-opts. Authored-by: Kousuke Saruta <sarutak@oss.nttdata.com> Signed-off-by: Marcelo Vanzin <vanzin@cloudera.com>
73 lines
4.2 KiB
Bash
Executable file
73 lines
4.2 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.
|
|
#
|
|
|
|
# This file is sourced when running various Spark programs.
|
|
# Copy it as spark-env.sh and edit that to configure Spark for your site.
|
|
|
|
# Options read when launching programs locally with
|
|
# ./bin/run-example or ./bin/spark-submit
|
|
# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files
|
|
# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node
|
|
# - SPARK_PUBLIC_DNS, to set the public dns name of the driver program
|
|
|
|
# Options read by executors and drivers running inside the cluster
|
|
# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node
|
|
# - SPARK_PUBLIC_DNS, to set the public DNS name of the driver program
|
|
# - SPARK_LOCAL_DIRS, storage directories to use on this node for shuffle and RDD data
|
|
# - MESOS_NATIVE_JAVA_LIBRARY, to point to your libmesos.so if you use Mesos
|
|
|
|
# Options read in YARN client/cluster mode
|
|
# - SPARK_CONF_DIR, Alternate conf dir. (Default: ${SPARK_HOME}/conf)
|
|
# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files
|
|
# - YARN_CONF_DIR, to point Spark towards YARN configuration files when you use YARN
|
|
# - SPARK_EXECUTOR_CORES, Number of cores for the executors (Default: 1).
|
|
# - SPARK_EXECUTOR_MEMORY, Memory per Executor (e.g. 1000M, 2G) (Default: 1G)
|
|
# - SPARK_DRIVER_MEMORY, Memory for Driver (e.g. 1000M, 2G) (Default: 1G)
|
|
|
|
# Options for the daemons used in the standalone deploy mode
|
|
# - SPARK_MASTER_HOST, to bind the master to a different IP address or hostname
|
|
# - SPARK_MASTER_PORT / SPARK_MASTER_WEBUI_PORT, to use non-default ports for the master
|
|
# - SPARK_MASTER_OPTS, to set config properties only for the master (e.g. "-Dx=y")
|
|
# - SPARK_WORKER_CORES, to set the number of cores to use on this machine
|
|
# - SPARK_WORKER_MEMORY, to set how much total memory workers have to give executors (e.g. 1000m, 2g)
|
|
# - SPARK_WORKER_PORT / SPARK_WORKER_WEBUI_PORT, to use non-default ports for the worker
|
|
# - SPARK_WORKER_DIR, to set the working directory of worker processes
|
|
# - SPARK_WORKER_OPTS, to set config properties only for the worker (e.g. "-Dx=y")
|
|
# - SPARK_DAEMON_MEMORY, to allocate to the master, worker and history server themselves (default: 1g).
|
|
# - SPARK_HISTORY_OPTS, to set config properties only for the history server (e.g. "-Dx=y")
|
|
# - SPARK_SHUFFLE_OPTS, to set config properties only for the external shuffle service (e.g. "-Dx=y")
|
|
# - SPARK_DAEMON_JAVA_OPTS, to set config properties for all daemons (e.g. "-Dx=y")
|
|
# - SPARK_DAEMON_CLASSPATH, to set the classpath for all daemons
|
|
# - SPARK_PUBLIC_DNS, to set the public dns name of the master or workers
|
|
|
|
# Options for launcher
|
|
# - SPARK_LAUNCHER_OPTS, to set config properties and Java options for the launcher (e.g. "-Dx=y")
|
|
|
|
# Generic options for the daemons used in the standalone deploy mode
|
|
# - SPARK_CONF_DIR Alternate conf dir. (Default: ${SPARK_HOME}/conf)
|
|
# - SPARK_LOG_DIR Where log files are stored. (Default: ${SPARK_HOME}/logs)
|
|
# - SPARK_PID_DIR Where the pid file is stored. (Default: /tmp)
|
|
# - SPARK_IDENT_STRING A string representing this instance of spark. (Default: $USER)
|
|
# - SPARK_NICENESS The scheduling priority for daemons. (Default: 0)
|
|
# - SPARK_NO_DAEMONIZE Run the proposed command in the foreground. It will not output a PID file.
|
|
# Options for native BLAS, like Intel MKL, OpenBLAS, and so on.
|
|
# You might get better performance to enable these options if using native BLAS (see SPARK-21305).
|
|
# - MKL_NUM_THREADS=1 Disable multi-threading of Intel MKL
|
|
# - OPENBLAS_NUM_THREADS=1 Disable multi-threading of OpenBLAS
|