You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by sh...@apache.org on 2011/10/14 20:10:05 UTC
svn commit: r1183450 - in /hadoop/common/branches/branch-0.22/hdfs:
CHANGES.txt src/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java
Author: shv
Date: Fri Oct 14 18:10:04 2011
New Revision: 1183450
URL: http://svn.apache.org/viewvc?rev=1183450&view=rev
Log:
HDFS-2012. Balancer incorrectly treats nodes whose utilization equals avgUtilization. Contributed by Uma Maheswara Rao G.
Modified:
hadoop/common/branches/branch-0.22/hdfs/CHANGES.txt
hadoop/common/branches/branch-0.22/hdfs/src/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java
Modified: hadoop/common/branches/branch-0.22/hdfs/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.22/hdfs/CHANGES.txt?rev=1183450&r1=1183449&r2=1183450&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.22/hdfs/CHANGES.txt (original)
+++ hadoop/common/branches/branch-0.22/hdfs/CHANGES.txt Fri Oct 14 18:10:04 2011
@@ -642,6 +642,9 @@ Release 0.22.0 - Unreleased
HDFS-1762. Allow TestHDFSCLI to be run against a cluster (cos)
+ HDFS-2012. Balancer incorrectly treats nodes whose utilization equals
+ avgUtilization. (Uma Maheswara Rao G via shv)
+
Release 0.21.1 - Unreleased
IMPROVEMENTS
Modified: hadoop/common/branches/branch-0.22/hdfs/src/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.22/hdfs/src/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java?rev=1183450&r1=1183449&r2=1183450&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.22/hdfs/src/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java (original)
+++ hadoop/common/branches/branch-0.22/hdfs/src/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java Fri Oct 14 18:10:04 2011
@@ -997,7 +997,10 @@ public class Balancer implements Tool {
this.aboveAvgUtilizedDatanodes.add((Source)datanodeS);
} else {
assert(isOverUtilized(datanodeS)) :
- datanodeS.getName()+ "is not an overUtilized node";
+ datanodeS.getName()+ " is not an overUtilized node:" +
+ " utilization=" + datanodeS.utilization +
+ " avgUtilization=" + avgUtilization +
+ " threshold=" + threshold;
this.overUtilizedDatanodes.add((Source)datanodeS);
overLoadedBytes += (long)((datanodeS.utilization-avgUtilization
-threshold)*datanodeS.datanode.getCapacity()/100.0);
@@ -1008,7 +1011,10 @@ public class Balancer implements Tool {
this.belowAvgUtilizedDatanodes.add(datanodeS);
} else {
assert (isUnderUtilized(datanodeS)) :
- datanodeS.getName()+ "is not an underUtilized node";
+ datanodeS.getName()+ "is not an underUtilized node:" +
+ " utilization=" + datanodeS.utilization +
+ " avgUtilization=" + avgUtilization +
+ " threshold=" + threshold;
this.underUtilizedDatanodes.add(datanodeS);
underLoadedBytes += (long)((avgUtilization-threshold-
datanodeS.utilization)*datanodeS.datanode.getCapacity()/100.0);
@@ -1440,11 +1446,11 @@ public class Balancer implements Tool {
return datanode.utilization > (avgUtilization+threshold);
}
- /* Return true if the given datanode is above average utilized
+ /* Return true if the given datanode is above or equal to average utilized
* but not overUtilized */
private boolean isAboveAvgUtilized(BalancerDatanode datanode) {
return (datanode.utilization <= (avgUtilization+threshold))
- && (datanode.utilization > avgUtilization);
+ && (datanode.utilization >= avgUtilization);
}
/* Return true if the given datanode is underUtilized */