HBase
  1. HBase
  2. HBASE-4464

Make region balancing parallel with balancer.balanceCluster()

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Not a Problem
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None

      Description

      balancer.balanceCluster() generates RegionPlans for HMaster.balance() to execute.
      We don't retract any RegionPlan in balancer.balanceCluster().
      In the near future, more complex algorithm would be introduced to try achieving maximum block location affinity for the regions to be moved. This means balancer.balanceCluster() would take longer to return.

      This JIRA makes region balancing parallel with balancer.balanceCluster()
      Meaning region balancing would be performed when balancer.balanceCluster() is still running.

        Issue Links

          Activity

          Hide
          Uma Maheswara Rao G added a comment -

          One idea is, Balancer can populate the Region plans into Queue from LoadBalancer.
          HMaster can initiate one thread to process the balancer plans queque. So, whenever balancer finalize one plan object, it will put into that queue. BalancerQueueProcessor(thread) can pick the plans from queue and process. But the current LoadBalancer interface does not take any queue. It will just return List of plans from balanceCluster api. Changing interface may be difficult, as the LoadBalancer is exposed one. Any alternatives without changing interface?

          Show
          Uma Maheswara Rao G added a comment - One idea is, Balancer can populate the Region plans into Queue from LoadBalancer. HMaster can initiate one thread to process the balancer plans queque. So, whenever balancer finalize one plan object, it will put into that queue. BalancerQueueProcessor(thread) can pick the plans from queue and process. But the current LoadBalancer interface does not take any queue. It will just return List of plans from balanceCluster api. Changing interface may be difficult, as the LoadBalancer is exposed one. Any alternatives without changing interface?
          Hide
          stack added a comment -

          Resolving. For old balancer, not for new stochastic.

          Show
          stack added a comment - Resolving. For old balancer, not for new stochastic.

            People

            • Assignee:
              Unassigned
              Reporter:
              Ted Yu
            • Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development