|
@@ -525,8 +525,7 @@ public class Balancer {
|
|
final C c = candidates.next();
|
|
final C c = candidates.next();
|
|
if (!c.hasSpaceForScheduling()) {
|
|
if (!c.hasSpaceForScheduling()) {
|
|
candidates.remove();
|
|
candidates.remove();
|
|
- } else if (matcher.match(dispatcher.getCluster(),
|
|
|
|
- g.getDatanodeInfo(), c.getDatanodeInfo())) {
|
|
|
|
|
|
+ } else if (matchStorageGroups(c, g, matcher)) {
|
|
return c;
|
|
return c;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -534,6 +533,13 @@ public class Balancer {
|
|
return null;
|
|
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 */
|
|
/* reset all fields in a balancer preparing for the next iteration */
|
|
void resetData(Configuration conf) {
|
|
void resetData(Configuration conf) {
|
|
this.overUtilized.clear();
|
|
this.overUtilized.clear();
|