private boolean needsBalance(BalancerClusterState c) {
    ClusterLoadState cs = new ClusterLoadState(c.clusterState);
    if (cs.getNumServers() < MIN_SERVER_BALANCE) {
      if (LOG.isDebugEnabled()) {
        LOG.debug(
          "Not running balancer because only " + cs.getNumServers() + " active regionserver(s)");
      }
      return false;
    }
    if (idleRegionServerExist(c)) {
      return true;
    }
    // Check if we even need to do any load balancing
    // HBASE-3681 check sloppiness first
    return sloppyRegionServerExist(cs);
  }
A checker function to decide when we want balance overall and certain table has been balanced,
do we still need to re-distribute regions of this table to achieve the state of overall-balance
@return true if this table should be balanced.
hbase-balancer/src/main/java/org/apache/hadoop/hbase/master/balancer/SimpleLoadBalancer.java