/** * Determine if a datanode should be chosen based on current workload. * * @param node The target datanode * @return Return true if the datanode should be excluded, otherwise false */ boolean excludeNodeByLoad(DatanodeDescriptor node){ final double maxLoad = considerLoadFactor * stats.getInServiceXceiverAverage(); final int nodeLoad = node.getXceiverCount(); if ((nodeLoad > maxLoad) && (maxLoad > 0)) { logNodeIsNotChosen(node, NodeNotChosenReason.NODE_TOO_BUSY, "(load: " + nodeLoad + " > " + maxLoad + ")"); return true; } return false; }
private static double getInServiceXceiverAverage(FSNamesystem fsn) { return fsn.getBlockManager().getDatanodeManager().getFSClusterStats() .getInServiceXceiverAverage(); }
.getInServiceXceiverAverage(), EPSILON); .getInServiceXceiverAverage(), EPSILON);
final double maxLoad = 2.0 * stats.getInServiceXceiverAverage(); final int nodeLoad = node.getXceiverCount(); if (nodeLoad > maxLoad) {
final double maxLoad = 2.0 * stats.getInServiceXceiverAverage(); final int nodeLoad = node.getXceiverCount(); if (nodeLoad > maxLoad) {