Add ability for user to specify environment variables
This commit is contained in:
parent
f9fc5c160a
commit
c9464c74a1
|
@ -42,6 +42,12 @@ This will build the shaded (consolidated) jar. Typically something like :
|
|||
|
||||
If you want to test out the YARN deployment mode, you can use the current Spark examples. A `spark-examples_{{site.SCALA_VERSION}}-{{site.SPARK_VERSION}}` file can be generated by running `sbt/sbt package`. NOTE: since the documentation you're reading is for Spark version {{site.SPARK_VERSION}}, we are assuming here that you have downloaded Spark {{site.SPARK_VERSION}} or checked it out of source control. If you are using a different version of Spark, the version numbers in the jar generated by the sbt package command will obviously be different.
|
||||
|
||||
# Configuration
|
||||
|
||||
Most of the configs are the same for Spark on YARN as other deploys. See the Configuration page for more information on those. These are configs that are specific to SPARK on YARN.
|
||||
|
||||
* `SPARK_YARN_USER_ENV`, environment variables to add to the Spark processes launched on YARN. This can be a comma separated list of environment variables. ie SPARK_YARN_USER_ENV="JAVA_HOME=/jdk64,FOO=bar"
|
||||
|
||||
# Launching Spark on YARN
|
||||
|
||||
Ensure that HADOOP_CONF_DIR or YARN_CONF_DIR points to the directory which contains the (client side) configuration files for the hadoop cluster.
|
||||
|
|
|
@ -185,6 +185,8 @@ class Client(conf: Configuration, args: ClientArguments) extends YarnClientImpl
|
|||
env("SPARK_YARN_LOG4J_SIZE") = log4jConfLocalRes.getSize().toString()
|
||||
}
|
||||
|
||||
// allow users to specify some environment variables
|
||||
Apps.setEnvFromInputString(env, System.getenv("SPARK_YARN_USER_ENV"))
|
||||
|
||||
// Add each SPARK-* key to the environment
|
||||
System.getenv().filterKeys(_.startsWith("SPARK")).foreach { case (k,v) => env(k) = v }
|
||||
|
@ -241,7 +243,7 @@ class Client(conf: Configuration, args: ClientArguments) extends YarnClientImpl
|
|||
// Command for the ApplicationMaster
|
||||
var javaCommand = "java";
|
||||
val javaHome = System.getenv("JAVA_HOME")
|
||||
if (javaHome != null && !javaHome.isEmpty()) {
|
||||
if ((javaHome != null && !javaHome.isEmpty()) || env.isDefinedAt("JAVA_HOME")){
|
||||
javaCommand = Environment.JAVA_HOME.$() + "/bin/java"
|
||||
}
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@ class WorkerRunnable(container: Container, conf: Configuration, masterAddress: S
|
|||
|
||||
var javaCommand = "java";
|
||||
val javaHome = System.getenv("JAVA_HOME")
|
||||
if (javaHome != null && !javaHome.isEmpty()) {
|
||||
if ((javaHome != null && !javaHome.isEmpty()) || env.isDefinedAt("JAVA_HOME")) {
|
||||
javaCommand = Environment.JAVA_HOME.$() + "/bin/java"
|
||||
}
|
||||
|
||||
|
@ -187,6 +187,9 @@ class WorkerRunnable(container: Container, conf: Configuration, masterAddress: S
|
|||
Apps.addToEnvironment(env, Environment.CLASSPATH.name, "$CLASSPATH")
|
||||
Client.populateHadoopClasspath(yarnConf, env)
|
||||
|
||||
// allow users to specify some environment variables
|
||||
Apps.setEnvFromInputString(env, System.getenv("SPARK_YARN_USER_ENV"))
|
||||
|
||||
System.getenv().filterKeys(_.startsWith("SPARK")).foreach { case (k,v) => env(k) = v }
|
||||
return env
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue