same here question? How do you archive your multi tenancy feature? 2017-03-01 3:03 GMT+08:00 Michael Gummelt <[email protected]>:
> I'm sorry, I still don't understand. What functionality does this > "compute layer" provide? You say it provides Multi tenancy, but Mesos > itself does that. You also say it "keeps track of resources", but again, > Mesos does that. What does tagging/un-tagging resources provide? > > > On Tue, Feb 28, 2017 at 12:46 AM, Ashish Mehta <[email protected]> > wrote: > >> Yes Michael, I have tried dynamic allocation with my own Mesos cluser, it >> works as expected and as documented! >> But now I want to move ahead and integrate with our own "compute layer". >> Our "compute layer" >> >> - provides Multi tenancy with chronos and marathon over Mesos. >> - Manages/book-keeps all the resources on behalf of individual >> tenant, having some quota assigned to it. It keeps track of resource by >> tagging/un-tagging them in Mesos. >> >> >> The problem with, out of the box "dynamic allocation" is that, our >> "compute layer" doesn't know the resource utilisation of the application, >> and can't tag/un-tag the machine automatically. If we tag all the machine >> before running the application based on spark.cores.max, then we will not >> be able to make use of "dynamic allocation" because the tagged machines are >> reserved and can't be used for other applications. >> >> *So I want to articulate my initial query here and ask:* >> What is the best way to get the feedback to my "compute layer", about >> spark application's requirement for auto-scalling? How about the following >> >> 1. Application exposing some API, or dumping event to inform the >> framework when it needs more resources >> 2. Or our "compute layer" polls the Mesos API to know the resources >> consumed by the application and deduce whether auto scaling is required or >> not. >> >> Thanks, >> Ashish >> >> On Tue, Feb 28, 2017 at 2:48 AM, Michael Gummelt <[email protected]> >> wrote: >> >>> I assume you've looked into dynamic allocation. What do you need that >>> isn't provided by dynamic allocation? >>> >>> On Mon, Feb 27, 2017 at 4:11 AM, David J. Palaitis < >>> [email protected]> wrote: >>> >>>> by using a combination of Spark's dynamic allocation, >>>> http://spark.apache.org/docs/latest/job-scheduli >>>> ng.html#configuration-and-setup, and a framework scheduler like Cook, >>>> https://github.com/twosigma/Cook/tree/master/spark, you can achieve >>>> the desired auto-scaling effect without the overhead of managing >>>> roles/constraints in mesos. i'd be happy to discuss this in more detail if >>>> you decide to give it a try. >>>> >>>> On Mon, Feb 27, 2017 at 3:14 AM, Ashish Mehta <[email protected] >>>> > wrote: >>>> >>>>> Hi, >>>>> >>>>> We want to move to auto-scaling of spark driver, where in more >>>>> resources are added into the available resources for "spark driver" based >>>>> on requirement. The requirement can increase/decrease based on multiple >>>>> SQL >>>>> queries being done over REST server, or number of queries with multiple >>>>> user over thrift server over Spark (HiveServer2). >>>>> >>>>> *Existing approach with static number of resources:* >>>>> We have a very large pool of resources, but my "spark driver" is >>>>> allocated limited amount of "static" resource, and we achieve this by >>>>> following >>>>> >>>>> 1. While running the application I tag machine in Mesos with the >>>>> name of my application, so that the offer is made accordingly. >>>>> 2. My application is run with the constraint for above tagged >>>>> machine using "spark.mesos.constraints" configuration, so that the >>>>> application only accept offer made by these tagged machine, and don't >>>>> eat >>>>> up all the resource in my very large cluster. >>>>> 3. Application launches executor on these accepted offers, and >>>>> they are used to do computation as defined by Spark job, or as and when >>>>> queries are fired over HTTP/Thrift server. >>>>> >>>>> *Approach for auto scaling:* >>>>> Auto-scaling of driver helps us in many ways, and lets us use the >>>>> resources with better efficiency. >>>>> For enabling auto scaling, where in my spark application will get more >>>>> and more resource offers, if it has consumed all the available resource, >>>>> the workflow will be as follows >>>>> >>>>> 1. Running a daemon to monitor my app on Mesos >>>>> 2. Keep on adding/removing machine for the application by >>>>> tagging/untagging them by monitoring the resource usage metric for my >>>>> application on Mesos. >>>>> 3. Scale up/down based on Step 2 by tagging and untagging, and >>>>> take "some buffer" into account. >>>>> >>>>> I wanted to know the opinion of you guys on "*Approach for auto >>>>> scaling*". Is this the right approach to solve auto scaling of Spark >>>>> driver? >>>>> Also tagging/untagging machine is something which we do to >>>>> limit/manage the resources in our big cluster. >>>>> >>>>> Thanks, >>>>> Ashish >>>>> >>>> >>>> >>> >>> >>> -- >>> Michael Gummelt >>> Software Engineer >>> Mesosphere >>> >> >> > > > -- > Michael Gummelt > Software Engineer > Mesosphere > -- Deshi Xiao Twitter: xds2000 E-mail: xiaods(AT)gmail.com

