hadoop-yarn-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sandy Ryza <sandy.r...@cloudera.com>
Subject Re: scheduler satisfying heterogeneous resource requests at same priority
Date Fri, 04 Jan 2013 07:38:37 GMT
Thanks all for the guidance.  I filed
https://issues.apache.org/jira/browse/YARN-314 to add in the ability to
request containers with different resource requirements at the same
priority level.  While it it doesn't look like it's needed for apps
currently, and can be circumvented by specifying different priorities if
absolutely necessary, it seems to me that it should be there for the future
and for completeness sake.

-Sandy

On Thu, Jan 3, 2013 at 8:14 PM, Vinod Kumar Vavilapalli <
vinodkv@hortonworks.com> wrote:

> The answer is a combination of what Robert and Bikas mentioned above.
>
>  - Priorities are used to order the scheduling requests.
>  - At a given priority, if you have requests of different sizes, it could
> be looking at the last request. We can clarify this in docs.
>
> Thanks,
> +Vinod Kumar Vavilapalli
> Hortonworks Inc.
> http://hortonworks.com/
>
> On Jan 3, 2013, at 3:15 AM, Tsuyoshi OZAWA wrote:
>
> > Sandy, it also depends on the timing. For instance, in MapReduce's case,
> > MRAppMaster requests the containers for each task separately. Could you
> > explain the timing when you issue each request?
> >
> >
> > On Thu, Jan 3, 2013 at 5:52 AM, Robert Evans <evans@yahoo-inc.com>
> wrote:
> >
> >> Mappers and reducers are requested at different priorities.  Reducers
> have
> >> a higher priority. But the AM does not request all of the reducers at
> >> once. It waits and will request some at a time until all of the mappers
> >> have been satisfied at which point it then requests the rest of the
> >> reducers.
> >>
> >> --Bobby
> >>
> >> On 1/2/13 2:47 PM, "Sandy Ryza" <sandy.ryza@cloudera.com> wrote:
> >>
> >>> Thanks for looking into it Bikas.  What you wrote makes sense to me.
> >>> You're
> >>> right that it's the last request not the largest.  Otherwise, you
> >>> summarize
> >>> my confusion well - why doesn't AppSchedulingInfo hold a list of
> >>> ResourceRequests for each node/priority?
> >>>
> >>> I also don't understand why this hasn't caused a problem already for
> >>> mapreduce when mappers and reducers request different amounts of
> memory.
> >>> It must be either because reduces are requested after all map
> containers
> >>> are completed? Or because they're requested at non-overlapping
> locations?
> >>>
> >>> On Wed, Jan 2, 2013 at 11:04 AM, Bikas Saha <bikas@hortonworks.com>
> >> wrote:
> >>>
> >>>> Reading the code seems to suggest that AppSchedulingInfo is not
> >>>> preferring
> >>>> the larger request. Its simply returning the last request for that
> >>>> priority and hostname. So it could be that in your case, the larger
> >>>> request is the second request. You could try and make it the first
> >>>> request
> >>>> and check if you get the same results.
> >>>>
> >>>> Wrt, your ResourceRequest question, having a single Resource
> capability
> >>>> simplifies ResourceRequest operations. Having heterogeneous resources
> is
> >>>> allowed by the API by submitting multiple ResourceRequests having
> >>>> different Resource capabilities. See the RMContainerRequestor code in
> >>>> the
> >>>> MR YARN app. Given the above, it looks like the Resource heterogeneity
> >>>> is
> >>>> lost inside the AppSchedulingInfo and that may be a bug or a conscious
> >>>> decision. Looking at folks experienced in that code for an answer. How
> >>>> is
> >>>> everything working despite this? Perhaps because the applications are
> >>>> not
> >>>> issuing heterogeneous requests for a given priority and location.
> >>>> Secondly, the * catch all is always around to save the day.
> >>>>
> >>>> Let me know if this makes sense. I may have missed stuff.
> >>>>
> >>>> -----Original Message-----
> >>>> From: Sandy Ryza [mailto:sandy.ryza@cloudera.com]
> >>>> Sent: Friday, December 28, 2012 4:46 PM
> >>>> To: yarn-dev@hadoop.apache.org
> >>>> Subject: scheduler satisfying heterogeneous resource requests at same
> >>>> priority
> >>>>
> >>>> I am trying to understand how YARN schedulers are able to satisfy
> >>>> smaller
> >>>> requests while larger requests are outstanding (per YARN-289).
> >>>>
> >>>> Consider the following situation:
> >>>> An application submits two requests - one for a container with 1024
MB
> >>>> and
> >>>> one for a container with 2048 MB.  1024 MB frees up on a node.  The
> >>>> scheduler should (or might wish to) place the smaller container on the
> >>>> node, instead of placing a reservation for the larger one.
> >>>>
> >>>> However, currently, if I understand correctly, the larger request is
> >>>> always serviced first.  AppSchedulingInfo, which is used by all the
> >>>> schedulers to find a container request when space becomes available,
> >>>> stores a map of priorities to maps of node/rack/* to ResourceRequests.
> >>>> A
> >>>> ResourceRequest contains a single Resource (capability), and the
> number
> >>>> of
> >>>> containers.  Why does a ResourceRequest not allow for heterogeneous
> >>>> containers.  Is this just not supported yet because it hasn't been
> >>>> needed
> >>>> yet?  Or is there a more fundamental reason I'm missing about why it
> >>>> doesn't make sense?
> >>>>
> >>>> many thanks for any guidance,
> >>>> Sandy
> >>>>
> >>
> >>
> >
> >
> > --
> > OZAWA Tsuyoshi
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message