HDFS-10319. Balancer should not try to pair storages with different types.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/704c57e3 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/704c57e3 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/704c57e3 Branch: refs/heads/branch-2.8 Commit: 704c57e3eb2d16e931d6f250e684f1d59730ac55 Parents: b726ae0 Author: Tsz-Wo Nicholas Sze <[email protected]> Authored: Thu Apr 21 15:20:12 2016 -0700 Committer: Tsz-Wo Nicholas Sze <[email protected]> Committed: Thu Apr 21 15:25:49 2016 -0700 ---------------------------------------------------------------------- .../org/apache/hadoop/hdfs/server/balancer/Balancer.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/704c57e3/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java index e3a1beb..6f01ae1 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java @@ -520,8 +520,7 @@ public class Balancer { final C c = candidates.next(); if (!c.hasSpaceForScheduling()) { candidates.remove(); - } else if (matcher.match(dispatcher.getCluster(), - g.getDatanodeInfo(), c.getDatanodeInfo())) { + } else if (matchStorageGroups(c, g, matcher)) { return c; } } @@ -529,6 +528,13 @@ public class Balancer { return null; } + private boolean matchStorageGroups(StorageGroup left, StorageGroup right, + Matcher matcher) { + return left.getStorageType() == right.getStorageType() + && matcher.match(dispatcher.getCluster(), + left.getDatanodeInfo(), right.getDatanodeInfo()); + } + /* reset all fields in a balancer preparing for the next iteration */ void resetData(Configuration conf) { this.overUtilized.clear(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
