diff --git a/conf/spark-env.sh.template b/conf/spark-env.sh.template index 5c1e876ef9afc..7b9c03acd2adc 100755 --- a/conf/spark-env.sh.template +++ b/conf/spark-env.sh.template @@ -40,6 +40,7 @@ # - 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) +# - SPARK_EXECUTOR_LAUNCH_PREFIX, Command string added in front of Spark executor # Options for the daemons used in the standalone deploy mode # - SPARK_MASTER_HOST, to bind the master to a different IP address or hostname diff --git a/yarn/src/main/scala/org/apache/spark/deploy/yarn/ExecutorRunnable.scala b/yarn/src/main/scala/org/apache/spark/deploy/yarn/ExecutorRunnable.scala index 8e0533f39ae53..8df870b3fd852 100644 --- a/yarn/src/main/scala/org/apache/spark/deploy/yarn/ExecutorRunnable.scala +++ b/yarn/src/main/scala/org/apache/spark/deploy/yarn/ExecutorRunnable.scala @@ -193,7 +193,8 @@ private[yarn] class ExecutorRunnable( */ // For log4j configuration to reference - javaOpts += ("-Dspark.yarn.app.container.log.dir=" + ApplicationConstants.LOG_DIR_EXPANSION_VAR) + javaOpts += ("-Dspark.yarn.app.container.log.dir=" + + ApplicationConstants.LOG_DIR_EXPANSION_VAR) YarnCommandBuilderUtils.addPermGenSizeOpt(javaOpts) val userClassPath = Client.getUserClasspath(sparkConf).flatMap { uri => @@ -207,8 +208,14 @@ private[yarn] class ExecutorRunnable( }.toSeq YarnSparkHadoopUtil.addOutOfMemoryErrorArgument(javaOpts) + + // Add support for extra executor prefix. + val executorCommandPrefix = (if (sys.env.contains("SPARK_EXECUTOR_LAUNCH_PREFIX")) + sys.env.get("SPARK_EXECUTOR_LAUNCH_PREFIX") else ""); + val commands = prefixEnv ++ Seq( - YarnSparkHadoopUtil.expandEnvironment(Environment.JAVA_HOME) + "/bin/java", + executorCommandPrefix + " " + YarnSparkHadoopUtil.expandEnvironment(Environment.JAVA_HOME) + + "/bin/java", "-server") ++ javaOpts ++ Seq("org.apache.spark.executor.CoarseGrainedExecutorBackend",