hadoop-yarn-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "wuchang (JIRA)" <j...@apache.org>
Subject [jira] [Created] (YARN-7561) Why hasContainerForNode return false directly when there is no request of ANY locality?
Date Mon, 27 Nov 2017 05:20:00 GMT
wuchang created YARN-7561:
-----------------------------

             Summary: Why hasContainerForNode return false directly when there is no request
of ANY locality?
                 Key: YARN-7561
                 URL: https://issues.apache.org/jira/browse/YARN-7561
             Project: Hadoop YARN
          Issue Type: Task
          Components: fairscheduler
    Affects Versions: 2.7.3
            Reporter: wuchang


I am studying the FairScheduler source cod of yarn 2.7.3.
By the code of in class FSAppAttempt:

{quote}
  public boolean hasContainerForNode(Priority prio, FSSchedulerNode node) {

    ResourceRequest anyRequest = getResourceRequest(prio, ResourceRequest.ANY);  
    ResourceRequest rackRequest = getResourceRequest(prio, node.getRackName()); 
    ResourceRequest nodeRequest = getResourceRequest(prio, node.getNodeName()); 

    return
        // There must be outstanding requests at the given priority:
        anyRequest != null && anyRequest.getNumContainers() > 0 &&
            // If locality relaxation is turned off at *-level, there must be a
            // non-zero request for the node's rack:
            (anyRequest.getRelaxLocality() ||
                (rackRequest != null && rackRequest.getNumContainers() > 0)) &&
            // If locality relaxation is turned off at rack-level, there must be a
            // non-zero request at the node:
            (rackRequest == null || rackRequest.getRelaxLocality() ||
                (nodeRequest != null && nodeRequest.getNumContainers() > 0)) &&
            // The requested container must be able to fit on the node:
            Resources.lessThanOrEqual(RESOURCE_CALCULATOR, null,
                anyRequest.getCapability(), node.getRMNode().getTotalCapability());
  }
{quote}



I really cannot understand why when there is no anyRequest , the method return false directly
without considering where there is NODE_LOCAL  or  RACK_LOCAL requests, and , *AppSchedulingInfo.allocateNodeLocal()*
 and *AppSchedulingInfo.allocateRackLocal()*  will also decrease the number of containers
for ResourceRequest.ANY.

Really thanks for some prompt.




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: yarn-dev-unsubscribe@hadoop.apache.org
For additional commands, e-mail: yarn-dev-help@hadoop.apache.org


Mime
View raw message