[ 
https://issues.apache.org/jira/browse/HDFS-5837?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Bryan Beaudreault updated HDFS-5837:
------------------------------------

    Description: 
In DefaultBlockPlacementPolicy, there is a setting 
dfs.namenode.replication.considerLoad which tries to balance the load of the 
cluster when choosing replica locations.  This code does not take into account 
decommissioned nodes.

The code for considerLoad calculates the load by doing:  TotalClusterLoad / 
numNodes.  However, numNodes includes decommissioned nodes (which have 0 load). 
 Therefore, the average load is artificially low.  Example:

TotalLoad = 250
numNodes = 100
decommissionedNodes = 70
remainingNodes = numNodes - decommissionedNodes = 30

avgLoad = 250/100 = 2.50
trueAvgLoad = 250 / 30 = 8.33

If the real load of the remaining 30 nodes is (on average) 8.33, this is more 
than 2x the calculated average load of 2.50.  This causes these nodes to be 
rejected as replica locations. The final result is that all nodes are rejected, 
and no replicas can be placed.  

See exceptions printed from client during this scenario: 
https://gist.github.com/bbeaudreault/49c8aa4bb231de54e9c1


  was:
In DefaultBlockPlacementPolicy, there is a setting 
dfs.namenode.replication.considerLoad which tries to balance the load of the 
cluster when choosing replica locations.  This code does not take into account 
decommissioned nodes.

The code for considerLoad calculates the load by doing:  TotalClusterLoad /
numNodes.  However, numNodes includes decommissioned nodes (which have 0 load). 
 Therefore, the average load is artificially low.  Example:

TotalLoad = 250
numNodes = 100
decommissionedNodes = 50

avgLoad = 250/100 = 2.50
trueAvgLoad = 250 / (100 - 70) = 8.33

If the real load of the remaining 30 nodes is (on average) 8.33, this is more 
than 2x the calculated average load of 2.50.  This causes these nodes to be 
rejected as replica locations. The final result is that all nodes are rejected, 
and no replicas can be placed.  

See exceptions printed from client during this scenario: 
https://gist.github.com/bbeaudreault/49c8aa4bb231de54e9c1



> dfs.namenode.replication.considerLoad does not consider decommissioned nodes
> ----------------------------------------------------------------------------
>
>                 Key: HDFS-5837
>                 URL: https://issues.apache.org/jira/browse/HDFS-5837
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: namenode
>            Reporter: Bryan Beaudreault
>
> In DefaultBlockPlacementPolicy, there is a setting 
> dfs.namenode.replication.considerLoad which tries to balance the load of the 
> cluster when choosing replica locations.  This code does not take into 
> account decommissioned nodes.
> The code for considerLoad calculates the load by doing:  TotalClusterLoad / 
> numNodes.  However, numNodes includes decommissioned nodes (which have 0 
> load).  Therefore, the average load is artificially low.  Example:
> TotalLoad = 250
> numNodes = 100
> decommissionedNodes = 70
> remainingNodes = numNodes - decommissionedNodes = 30
> avgLoad = 250/100 = 2.50
> trueAvgLoad = 250 / 30 = 8.33
> If the real load of the remaining 30 nodes is (on average) 8.33, this is more 
> than 2x the calculated average load of 2.50.  This causes these nodes to be 
> rejected as replica locations. The final result is that all nodes are 
> rejected, and no replicas can be placed.  
> See exceptions printed from client during this scenario: 
> https://gist.github.com/bbeaudreault/49c8aa4bb231de54e9c1



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to