[ 
https://issues.apache.org/jira/browse/SPARK-33864?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ramesha Bhatta updated SPARK-33864:
-----------------------------------
    Summary: How can we submit or initiate multiple spark application with 
single or few JVM  (was: How can we submit or initiate multiple application 
with single or few JVM)

> How can we submit or initiate multiple spark application with single or few 
> JVM
> -------------------------------------------------------------------------------
>
>                 Key: SPARK-33864
>                 URL: https://issues.apache.org/jira/browse/SPARK-33864
>             Project: Spark
>          Issue Type: Improvement
>          Components: Deploy
>    Affects Versions: 2.4.5
>            Reporter: Ramesha Bhatta
>            Priority: Major
>
> How can we have single JVM or few JVM process submit multiple application to 
> cluster.
> It is observed that each spark-submit opens upto 400 JARS of >1GB size and 
> creates  __spark_conf__XXXX.zip in /tmp  and copy under application specific 
> .staging directory.    When run concurrently for # of JVMs that can be 
> supported in a server is limited and submit alone takes 
> In our use-case, literally millions of time creation of this zip file before 
> any actual change in configuration is not efficient and there should have 
> been an option to create this on need basis and option to re-use (cache).
> Direct impact is any submission with concurrency >40 (#of hyperthreaded 
> cores) leads to failure and CPU overload on GW. Tried Livy, however noticed, 
> in the background this solution also does a spark-submit and same problem 
> persists and getting "response code 404" and observe the same CPU overload on 
> server running livy. The concurrency is due to mini-batches over REST and 
> expecting and try to support 2000+ concurrent requests as long as we have the 
> resource to support in the cluster. For this spark-submit is the major 
> bottleneck because of the explained situation. For JARS submission, we have 
> more than one work-around (1.pre-distribute the jars to a specified folder 
> and refer local keyword or 2) stage the JARS in a HDFS location and specify 
> HDFS reference thus no file-copy per application).
> Looking at the code yarn/Client.scala, it appeared possible to make change in 
> the spark-submit and thus raising a enhancement request. 
>  Please prioritize.
> I guess, the change needed is in 
> [https://github.com/apache/spark/blob/48f93af9f3d40de5bf087eb1a06c1b9954b2ad76/resource-managers/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala]
>  line 745 ( "val confArchive = File.createTempFile(LOCALIZED_CONF_DIR, 
> ".zip", new File(Utils.getLocalDir(sparkConf))) )....
> Adding some logic like the last time the file created/file-existence etc. and 
> avoid re-creating again repetitively/excessively is right thing to do.
> Second change is avoid distributing this for every application and reuse from 
> shared HDFS location.
>  ==
> // Upload the conf archive to HDFS manually, and record its location in the 
> configuration.
>  // This will allow the AM to know where the conf archive is in HDFS, so that 
> it can be
>  // distributed to the containers.
>  //
>  // This code forces the archive to be copied, so that unit tests pass (since 
> in that case both
>  // file systems are the same and the archive wouldn't normally be copied). 
> In most (all?)
>  // deployments, the archive would be copied anyway, since it's a temp file 
> in the local file
>  // system.
>  val remoteConfArchivePath = new Path(destDir, LOCALIZED_CONF_ARCHIVE)
>  val remoteFs = FileSystem.get(remoteConfArchivePath.toUri(), hadoopConf)
>  cachedResourcesConf.set(CACHED_CONF_ARCHIVE, 
> remoteConfArchivePath.toString())
> val localConfArchive = new Path(createConfArchive().toURI())
>  copyFileToRemote(destDir, localConfArchive, replication, symlinkCache, force 
> = true,
>  destName = Some(LOCALIZED_CONF_ARCHIVE))
>  ===
> Regards,
>  -Ramesh



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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

Reply via email to