You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yarn-dev@hadoop.apache.org by "Wangda Tan (Jira)" <ji...@apache.org> on 2020/07/30 17:49:00 UTC

[jira] [Created] (YARN-10380) Import logic of multi-node allocation in CapacityScheduler

Wangda Tan created YARN-10380:
---------------------------------

             Summary: Import logic of multi-node allocation in CapacityScheduler
                 Key: YARN-10380
                 URL: https://issues.apache.org/jira/browse/YARN-10380
             Project: Hadoop YARN
          Issue Type: Improvement
            Reporter: Wangda Tan


*1) Entry point:* 
When we do multi-node allocation, we're using the same logic of async scheduling:
{code:java}
// Allocate containers of node [start, end)
 for (FiCaSchedulerNode node : nodes) {
  if (current++ >= start) {
     if (shouldSkipNodeSchedule(node, cs, printSkipedNodeLogging)) {
        continue;
     }
     cs.allocateContainersToNode(node.getNodeID(), false);
  }
 } {code}
Is it the most effective way to do multi-node scheduling? Should we allocate based on partitions? In above logic, if we have thousands of node in one partition, we will repeatly access all nodes of the partition thousands of times.

I would suggest looking at making entry-point for node-heartbeat, async-scheduling (single node), and async-scheduling (multi-node) to be different.

Node-heartbeat and async-scheduling (single node) can be still similar and share most of the code. 

async-scheduling (multi-node): should iterate partition first, using pseudo code like: 
{code:java}
for (partition : all partitions) {
  allocateContainersOnMultiNodes(getCandidate(partition))
} {code}
 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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