Repository: spark
Updated Branches:
  refs/heads/master e18b571c3 -> 2f6dd634c


[SPARK-11105] [YARN] Distribute log4j.properties to executors

Currently log4j.properties file is not uploaded to executor's which is leading 
them to use the default values. This fix will make sure that file is always 
uploaded to distributed cache so that executor will use the latest settings.

If user specifies log configurations through --files then executors will be 
picking configs from --files instead of $SPARK_CONF_DIR/log4j.properties

Author: vundela <[email protected]>
Author: Srinivasa Reddy Vundela <[email protected]>

Closes #9118 from vundela/master.


Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/2f6dd634
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/2f6dd634
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/2f6dd634

Branch: refs/heads/master
Commit: 2f6dd634c169a34811738a3c230cce4462612748
Parents: e18b571
Author: vundela <[email protected]>
Authored: Tue Oct 20 11:12:28 2015 -0700
Committer: Marcelo Vanzin <[email protected]>
Committed: Tue Oct 20 11:12:28 2015 -0700

----------------------------------------------------------------------
 docs/running-on-yarn.md                                |  5 ++++-
 .../scala/org/apache/spark/deploy/yarn/Client.scala    | 13 +++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/spark/blob/2f6dd634/docs/running-on-yarn.md
----------------------------------------------------------------------
diff --git a/docs/running-on-yarn.md b/docs/running-on-yarn.md
index 677c000..db6bfa6 100644
--- a/docs/running-on-yarn.md
+++ b/docs/running-on-yarn.md
@@ -81,7 +81,7 @@ all environment variables used for launching each container. 
This process is use
 classpath problems in particular. (Note that enabling this requires admin 
privileges on cluster
 settings and a restart of all node managers. Thus, this is not applicable to 
hosted clusters).
 
-To use a custom log4j configuration for the application master or executors, 
there are two options:
+To use a custom log4j configuration for the application master or executors, 
here are the options:
 
 - upload a custom `log4j.properties` using `spark-submit`, by adding it to the 
`--files` list of files
   to be uploaded with the application.
@@ -89,6 +89,9 @@ To use a custom log4j configuration for the application 
master or executors, the
   (for the driver) or `spark.executor.extraJavaOptions` (for executors). Note 
that if using a file,
   the `file:` protocol should be explicitly provided, and the file needs to 
exist locally on all
   the nodes.
+- update the `$SPARK_CONF_DIR/log4j.properties` file and it will be 
automatically uploaded along
+  with the other configurations. Note that other 2 options has higher priority 
than this option if
+  multiple options are specified.
 
 Note that for the first option, both executors and the application master will 
share the same
 log4j configuration, which may cause issues when they run on the same node 
(e.g. trying to write

http://git-wip-us.apache.org/repos/asf/spark/blob/2f6dd634/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala
----------------------------------------------------------------------
diff --git a/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala 
b/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala
index 754215d..4954b61 100644
--- a/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala
+++ b/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala
@@ -497,6 +497,19 @@ private[spark] class Client(
    */
   private def createConfArchive(): File = {
     val hadoopConfFiles = new HashMap[String, File]()
+
+    // Uploading $SPARK_CONF_DIR/log4j.properties file to the distributed 
cache to make sure that
+    // the executors will use the latest configurations instead of the default 
values. This is
+    // required when user changes log4j.properties directly to set the log 
configurations. If
+    // configuration file is provided through --files then executors will be 
taking configurations
+    // from --files instead of $SPARK_CONF_DIR/log4j.properties.
+    val log4jFileName = "log4j.properties"
+    
Option(Utils.getContextOrSparkClassLoader.getResource(log4jFileName)).foreach { 
url =>
+      if (url.getProtocol == "file") {
+        hadoopConfFiles(log4jFileName) = new File(url.getPath)
+      }
+    }
+
     Seq("HADOOP_CONF_DIR", "YARN_CONF_DIR").foreach { envKey =>
       sys.env.get(envKey).foreach { path =>
         val dir = new File(path)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to