The resource management in yarn cluster mode is yarns task. So it dependents how you configured the queues and the scheduler there.
> On 8 Feb 2017, at 12:10, Cosmin Posteuca <cosmin.poste...@gmail.com> wrote: > > I tried to run some test on EMR on yarn cluster mode. > > I have a cluster with 16 cores(8 processors with 2 threads each). If i run > one job(use 5 core) takes 90 seconds, if i run 2 jobs simultaneous, both > finished in 170 seconds. If i run 3 jobs simultaneous, all three finished in > 240 seconds. > > If i run 6 jobs, i expect to first 3 jobs to finish simultaneous in 240 > seconds, and next 3 jobs finish in 480 seconds from cluster start time. But > that doesn’t happened. My firs job finished after 120 second, second finished > after 180 seconds, third finished after 240 second, the fourth and the fifth > finished simultaneous after 360 seconds, and the last finished after 400 > seconds. > > I expected to run in a FIFO mode, but that doesn’t happened. Seems to be a > combination of FIFO and FAIR. > > Is this the correct behavior of spark? > > Thank you! > > > 2017-02-08 9:29 GMT+02:00 Gourav Sengupta <gourav.sengu...@gmail.com>: >> Hi, >> >> Michael's answer will solve the problem in case you using only SQL based >> solution. >> >> Otherwise please refer to the wonderful details mentioned here >> https://spark.apache.org/docs/latest/job-scheduling.html. With EMR 5.3.0 >> released SPARK 2.1.0 is available in AWS. >> >> (note that there is an issue with using zeppelin in it and I have raised it >> as an issue to AWS and they are looking into it now) >> >> Regards, >> Gourav Sengupta >> >>> On Tue, Feb 7, 2017 at 10:37 PM, Michael Segel <msegel_had...@hotmail.com> >>> wrote: >>> Why couldn’t you use the spark thrift server? >>> >>> >>>> On Feb 7, 2017, at 1:28 PM, Cosmin Posteuca <cosmin.poste...@gmail.com> >>>> wrote: >>>> >>>> answer for Gourav Sengupta >>>> >>>> I want to use same spark application because i want to work as a FIFO >>>> scheduler. My problem is that i have many jobs(not so big) and if i run an >>>> application for every job my cluster will split resources as a FAIR >>>> scheduler(it's what i observe, maybe i'm wrong) and exist the possibility >>>> to create bottleneck effect. The start time isn't a problem for me, >>>> because it isn't a real-time application. >>>> >>>> I need a business solution, that's the reason why i can't use code from >>>> github. >>>> >>>> Thanks! >>>> >>>> 2017-02-07 19:55 GMT+02:00 Gourav Sengupta <gourav.sengu...@gmail.com>: >>>>> Hi, >>>>> >>>>> May I ask the reason for using the same spark application? Is it because >>>>> of the time it takes in order to start a spark context? >>>>> >>>>> On another note you may want to look at the number of contributors in a >>>>> github repo before choosing a solution. >>>>> >>>>> >>>>> Regards, >>>>> Gourav >>>>> >>>>>> On Tue, Feb 7, 2017 at 5:26 PM, vincent gromakowski >>>>>> <vincent.gromakow...@gmail.com> wrote: >>>>>> Spark jobserver or Livy server are the best options for pure technical >>>>>> API. >>>>>> If you want to publish business API you will probably have to build you >>>>>> own app like the one I wrote a year ago >>>>>> https://github.com/elppc/akka-spark-experiments >>>>>> It combines Akka actors and a shared Spark context to serve concurrent >>>>>> subsecond jobs >>>>>> >>>>>> >>>>>> 2017-02-07 15:28 GMT+01:00 ayan guha <guha.a...@gmail.com>: >>>>>>> I think you are loking for livy or spark jobserver >>>>>>> >>>>>>>> On Wed, 8 Feb 2017 at 12:37 am, Cosmin Posteuca >>>>>>>> <cosmin.poste...@gmail.com> wrote: >>>>>>>> I want to run different jobs on demand with same spark context, but i >>>>>>>> don't know how exactly i can do this. >>>>>>>> >>>>>>>> I try to get current context, but seems it create a new spark >>>>>>>> context(with new executors). >>>>>>>> >>>>>>>> I call spark-submit to add new jobs. >>>>>>>> >>>>>>>> I run code on Amazon EMR(3 instances, 4 core & 16GB ram / instance), >>>>>>>> with yarn as resource manager. >>>>>>>> >>>>>>>> My code: >>>>>>>> >>>>>>>> val sparkContext = SparkContext.getOrCreate() >>>>>>>> val content = 1 to 40000 >>>>>>>> val result = sparkContext.parallelize(content, 5) >>>>>>>> result.map(value => value.toString).foreach(loop) >>>>>>>> >>>>>>>> def loop(x: String): Unit = { >>>>>>>> for (a <- 1 to 30000000) { >>>>>>>> >>>>>>>> } >>>>>>>> } >>>>>>>> spark-submit: >>>>>>>> >>>>>>>> spark-submit --executor-cores 1 \ >>>>>>>> --executor-memory 1g \ >>>>>>>> --driver-memory 1g \ >>>>>>>> --master yarn \ >>>>>>>> --deploy-mode cluster \ >>>>>>>> --conf spark.dynamicAllocation.enabled=true \ >>>>>>>> --conf spark.shuffle.service.enabled=true \ >>>>>>>> --conf spark.dynamicAllocation.minExecutors=1 \ >>>>>>>> --conf spark.dynamicAllocation.maxExecutors=3 \ >>>>>>>> --conf spark.dynamicAllocation.initialExecutors=3 \ >>>>>>>> --conf spark.executor.instances=3 \ >>>>>>>> If i run twice spark-submit it create 6 executors, but i want to run >>>>>>>> all this jobs on same spark application. >>>>>>>> >>>>>>>> How can achieve adding jobs to an existing spark application? >>>>>>>> >>>>>>>> I don't understand why SparkContext.getOrCreate() don't get existing >>>>>>>> spark context. >>>>>>>> >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> Cosmin P. >>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Best Regards, >>>>>>> Ayan Guha >>>>>> >>>>> >>>> >>> >> >