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

Varun Vasudev commented on YARN-4344:
-------------------------------------

An example of a situation is shown below -
{code}
2015-11-09 10:43:51,784 INFO  resourcemanager.ResourceTrackerService 
(ResourceTrackerService.java:registerNodeManager(345)) - NodeManager from node 
10.0.0.64(cmPort: 30050 httpPort: 30060) registered with capability: 
<memory:5632, vCores:8>, assigned nodeId 10.0.0.64:30050
2015-11-09 10:43:51,786 INFO  rmnode.RMNodeImpl (RMNodeImpl.java:handle(434)) - 
10.0.0.64:30050 Node Transitioned from NEW to RUNNING
2015-11-09 10:43:51,814 INFO  capacity.CapacityScheduler 
(CapacityScheduler.java:addNode(1193)) - Added node 10.0.0.64:30050 
clusterResource: <memory:5632, vCores:8>
2015-11-09 10:44:37,878 INFO  util.RackResolver 
(RackResolver.java:coreResolve(109)) - Resolved 10.0.0.63 to /default-rack
2015-11-09 10:44:37,879 INFO  resourcemanager.ResourceTrackerService 
(ResourceTrackerService.java:registerNodeManager(345)) - NodeManager from node 
10.0.0.63(cmPort: 30050 httpPort: 30060) registered with capability: 
<memory:10240, vCores:4>, assigned nodeId 10.0.0.63:30050
2015-11-09 10:44:37,879 INFO  rmnode.RMNodeImpl (RMNodeImpl.java:handle(434)) - 
10.0.0.63:30050 Node Transitioned from NEW to RUNNING
2015-11-09 10:44:37,882 INFO  capacity.CapacityScheduler 
(CapacityScheduler.java:addNode(1193)) - Added node 10.0.0.63:30050 
clusterResource: <memory:15872, vCores:12>
2015-11-09 10:44:39,307 INFO  util.RackResolver 
(RackResolver.java:coreResolve(109)) - Resolved 10.0.0.64 to /default-rack
2015-11-09 10:44:39,309 INFO  resourcemanager.ResourceTrackerService 
(ResourceTrackerService.java:registerNodeManager(313)) - Reconnect from the 
node at: 10.0.0.64
2015-11-09 10:44:39,312 INFO  resourcemanager.ResourceTrackerService 
(ResourceTrackerService.java:registerNodeManager(345)) - NodeManager from node 
10.0.0.64(cmPort: 30050 httpPort: 30060) registered with capability: 
<memory:10240, vCores:4>, assigned nodeId 10.0.0.64:30050
2015-11-09 10:44:39,314 INFO  capacity.CapacityScheduler 
(CapacityScheduler.java:removeNode(1247)) - Removed node 10.0.0.64:30050 
clusterResource: <memory:5632, vCores:8>
2015-11-09 10:44:39,315 INFO  capacity.CapacityScheduler 
(CapacityScheduler.java:addNode(1193)) - Added node 10.0.0.64:30050 
clusterResource: <memory:15872, vCores:12>
{code}

In this case - NM's from 10.0.0.64 and 10.0.0.63 registered leading to a total 
cluster resource of clusterResource: <memory:15872, vCores:12>. After that 
10.0.0.64 re-connected with changed capabilities(from <memory:5632, vCores:8> 
to <memory:10240, vCores:4>). This should have led to the cluster resources 
becoming <memory:20480, vcores:8> but instead it is calculated to be 
<memory:15872, vCores:12>.

The root cause is this piece of code from RMNodeImpl -
{code}
rmNode.context.getDispatcher().getEventHandler().handle(
              new NodeRemovedSchedulerEvent(rmNode));

if (!rmNode.getTotalCapability().equals(
             newNode.getTotalCapability())) {
           rmNode.totalCapability = newNode.getTotalCapability();
{code}

If the dispatcher is delayed in its processing of the event, by the time the 
remove node is processed,  rmNode.totalCapability = 
newNode.getTotalCapability() has already been executed and the resources that 
are removed are the changed capabilities and not the older capabilities of the 
node.



> NMs reconnecting with changed capabilities can lead to wrong cluster resource 
> calculations
> ------------------------------------------------------------------------------------------
>
>                 Key: YARN-4344
>                 URL: https://issues.apache.org/jira/browse/YARN-4344
>             Project: Hadoop YARN
>          Issue Type: Bug
>          Components: resourcemanager
>    Affects Versions: 2.7.1, 2.6.2
>            Reporter: Varun Vasudev
>            Assignee: Varun Vasudev
>            Priority: Critical
>
> After YARN-3802, if an NM re-connects to the RM with changed capabilities, 
> there can arise situations where the overall cluster resource calculation for 
> the cluster will be incorrect leading to inconsistencies in scheduling.



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

Reply via email to