[ 
https://issues.apache.org/jira/browse/MAPREDUCE-6529?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14983230#comment-14983230
 ] 

Jason Lowe commented on MAPREDUCE-6529:
---------------------------------------

bq. For example, in a heterogeneous cluster, reduce task may prefer a container 
on powerful machine with higher I/O speed. MPI job may prefer containers on 
machine with higher cpu frequency. But RM can't know all the resource 
requirement for different applications. So I am just wandering if the RPC 
protocol between RM and AM may provide such new interface, let the AM make a 
second choice about if AM will use the container it just gets.

If the AM has a preference for something then it needs to specify that in the 
locality request.  Failing to do so just leads to a Monte Carlo situation where 
the AM tosses away containers hoping that the next random container is better 
than the last while the task starves for resources in the interim.  The AM 
doesn't have a cluster-wide view.  It's not going to know that the nodes it 
desires so much are all occupied, nor does it know what other things are 
running on various nodes.  So I still think it's undesirable to have the AM 
toss away a container because it hopes a better one will come along later.  
Instead we should have the AM improve the container request so the RM can 
better know the AM's intentions.

For example, if the cluster is heterogeneous with some nodes being much better 
for reducers than others then we should label those nodes.  Then the AM request 
can ask reducers to use those labeled nodes with the ability to relax that 
locality constraint if the nodes are unavailable.  The RM will make a much 
better decision more efficiently than the AM could ever hope to do on its own.  
Otherwise the AM is going to get a container, see it's not on one of the "good" 
nodes and toss it, request another, get another bad allocation, rinse, repeat.  
If we can teach the MapReduce AM how to recognize a good node vs. a bad node 
then we can also teach it how to request those nodes when it makes the initial 
allocation request.


> AppMaster will not retry to request resource if AppMaster happens to decide 
> to not use the resource
> ---------------------------------------------------------------------------------------------------
>
>                 Key: MAPREDUCE-6529
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-6529
>             Project: Hadoop Map/Reduce
>          Issue Type: Improvement
>          Components: mr-am
>    Affects Versions: 2.6.0
>            Reporter: Wei Chen
>
> I am viewing code in RMContainerAllocator.java.   I want to do some 
> improvement  so that the AppMaster could give up some containers that may not 
> be optimal  when it receives new assigned containers.  But I found that if 
> AppMaster give up the containers, it will not retry to request the resource 
> again.
> int RMContainerRequestor.java, Set<ResourceRequest> ask  is used to ask 
> resource from ResourceManager. I found each container could only be requested 
> once. It mean ask can be filled by addResourceRequestToAsk(ResourceRequest 
> remoteRequest[]), but it can only added for once for each container. If we 
> give up one assigned container, It will never request again



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to