Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-6721

RegionServer Group based Assignment

    Details

    • Type: New Feature
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.0.0
    • Component/s: regionserver
    • Labels:
    • Hadoop Flags:
      Reviewed
    • Release Note:
      Hide
      [ADVANCED USERS ONLY] This patch adds a new experimental module hbase-rsgroup. It is an advanced feature for partitioning regionservers into distinctive groups for strict isolation, and should only be used by users who are sophisticated enough to understand the full implications and have a sufficient background in managing HBase clusters.

      RSGroups can be defined and managed with shell commands or corresponding Java APIs. A server can be added to a group with hostname and port pair, and tables can be moved to this group so that only regionservers in the same rsgroup can host the regions of the table. RegionServers and tables can only belong to 1 group at a time. By default, all tables and regionservers belong to the "default" group. System tables can also be put into a group using the regular APIs. A custom balancer implementation tracks assignments per rsgroup and makes sure to move regions to the relevant regionservers in that group. The group information is stored in a regular HBase table, and a zookeeper-based read-only cache is used at the cluster bootstrap time.

      To enable, add the following to your hbase-site.xml and restart your Master:


       <property>
         <name>hbase.coprocessor.master.classes</name>
         <value>org.apache.hadoop.hbase.rsgroup.RSGroupAdminEndpoint</value>
       </property>
       <property>
         <name>hbase.master.loadbalancer.class</name>
         <value>org.apache.hadoop.hbase.rsgroup.RSGroupBasedLoadBalancer</value>
       </property>


      Then use the shell 'rsgroup' commands to create and manipulate regionserver groups: e.g. to add a group and then add a server to it, do as follows:

       hbase(main):008:0> add_rsgroup 'my_group'
       Took 0.5610 seconds

      This adds a group to the 'hbase:rsgroup' system table. Add a server (hostname + port) to the group using the 'move_rsgroup_servers' command as follows:

       hbase(main):010:0> move_rsgroup_servers 'my_group',['k.att.net:51129']
      Show
      [ADVANCED USERS ONLY] This patch adds a new experimental module hbase-rsgroup. It is an advanced feature for partitioning regionservers into distinctive groups for strict isolation, and should only be used by users who are sophisticated enough to understand the full implications and have a sufficient background in managing HBase clusters. RSGroups can be defined and managed with shell commands or corresponding Java APIs. A server can be added to a group with hostname and port pair, and tables can be moved to this group so that only regionservers in the same rsgroup can host the regions of the table. RegionServers and tables can only belong to 1 group at a time. By default, all tables and regionservers belong to the "default" group. System tables can also be put into a group using the regular APIs. A custom balancer implementation tracks assignments per rsgroup and makes sure to move regions to the relevant regionservers in that group. The group information is stored in a regular HBase table, and a zookeeper-based read-only cache is used at the cluster bootstrap time. To enable, add the following to your hbase-site.xml and restart your Master:  <property>    <name>hbase.coprocessor.master.classes</name>    <value>org.apache.hadoop.hbase.rsgroup.RSGroupAdminEndpoint</value>  </property>  <property>    <name>hbase.master.loadbalancer.class</name>    <value>org.apache.hadoop.hbase.rsgroup.RSGroupBasedLoadBalancer</value>  </property> Then use the shell 'rsgroup' commands to create and manipulate regionserver groups: e.g. to add a group and then add a server to it, do as follows:  hbase(main):008:0> add_rsgroup 'my_group'  Took 0.5610 seconds This adds a group to the 'hbase:rsgroup' system table. Add a server (hostname + port) to the group using the 'move_rsgroup_servers' command as follows:  hbase(main):010:0> move_rsgroup_servers 'my_group',['k.att.net:51129']

      Description

      In multi-tenant deployments of HBase, it is likely that a RegionServer will be serving out regions from a number of different tables owned by various client applications. Being able to group a subset of running RegionServers and assign specific tables to it, provides a client application a level of isolation and resource allocation.

      The proposal essentially is to have an AssignmentManager which is aware of RegionServer groups and assigns tables to region servers based on groupings. Load balancing will occur on a per group basis as well.

      This is essentially a simplification of the approach taken in HBASE-4120. See attached document.

        Attachments

        1. hbase-6721-v29.patch
          852 kB
          Francis Liu
        2. hbase-6721-v28.patch
          852 kB
          Francis Liu
        3. hbase-6721-v28.patch
          852 kB
          Enis Soztutar
        4. hbase-6721-v27.patch
          853 kB
          Enis Soztutar
        5. hbase-6721-v27.patch.txt
          853 kB
          Enis Soztutar
        6. hbase-6721-v27.patch
          853 kB
          Francis Liu
        7. hbase-6721-v26.patch
          853 kB
          Francis Liu
        8. hbase-6721-v26_draft1.patch
          854 kB
          Francis Liu
        9. hbase-6721-v25.patch
          863 kB
          Francis Liu
        10. hbase-6721-v23.patch
          863 kB
          Francis Liu
        11. hbase-6721-v22.patch
          861 kB
          Francis Liu
        12. hbase-6721-v21.patch
          860 kB
          Francis Liu
        13. hbase-6721-v20.patch
          859 kB
          Francis Liu
        14. hbase-6721-v19.patch
          857 kB
          Francis Liu
        15. hbase-6721-v18.patch
          856 kB
          Francis Liu
        16. hbase-6721-v17.patch
          841 kB
          Enis Soztutar
        17. hbase-6721-v16.patch
          840 kB
          Enis Soztutar
        18. hbase-6721-v15-branch-1.1.patch
          848 kB
          Enis Soztutar
        19. HBASE-6721_15.patch
          838 kB
          Francis Liu
        20. HBASE-6721_14.patch
          812 kB
          Francis Liu
        21. HBASE-6721_13.patch
          826 kB
          Francis Liu
        22. HBASE-6721_12.patch
          877 kB
          Francis Liu
        23. HBASE-6721_hbase-6721_addendum.patch
          161 kB
          Francis Liu
        24. HBASE-6721_0.98_2.patch
          876 kB
          Nick Dimiduk
        25. HBASE-6721_98_2.patch
          876 kB
          Francis Liu
        26. HBASE-6721_98_1.patch
          941 kB
          Francis Liu
        27. roundRobinAssignment Sequence Diagram.svg
          95 kB
          Guorui Wu
        28. retainAssignment Sequence Diagram.svg
          150 kB
          Guorui Wu
        29. randomAssignment Sequence Diagram.svg
          90 kB
          Guorui Wu
        30. immediateAssignments Sequence Diagram.svg
          94 kB
          Guorui Wu
        31. HBASE-6721 GroupBasedLoadBalancer Sequence Diagram.xml
          27 kB
          Guorui Wu
        32. balanceCluster Sequence Diagram.svg
          81 kB
          Guorui Wu
        33. HBASE-6721_11.patch
          942 kB
          Francis Liu
        34. HBASE-6721_trunk2.patch
          820 kB
          Francis Liu
        35. HBASE-6721_trunk1.patch
          820 kB
          Francis Liu
        36. HBASE-6721_10.patch
          781 kB
          Francis Liu
        37. HBASE-6721_9.patch
          779 kB
          Francis Liu
        38. HBASE-6721_9.patch
          775 kB
          Francis Liu
        39. HBASE-6721-DesigDoc.pdf
          91 kB
          Francis Liu
        40. HBASE-6721_8.patch
          778 kB
          Francis Liu
        41. 6721-master-webUI.patch
          3 kB
          chunhui shen
        42. HBASE-6721-DesigDoc.pdf
          89 kB
          Francis Liu
        43. HBASE-6721-DesigDoc.pdf
          86 kB
          Francis Liu
        44. HBASE-6721_trunk.patch
          771 kB
          Francis Liu
        45. HBASE-6721_trunk.patch
          225 kB
          Francis Liu
        46. HBASE-6721_trunk.patch
          225 kB
          Francis Liu
        47. HBASE-6721_94_7.patch
          201 kB
          Francis Liu
        48. HBASE-6721_94_6.patch
          196 kB
          Francis Liu
        49. HBASE-6721_94_5.patch
          184 kB
          Francis Liu
        50. HBASE-6721_94_4.patch
          180 kB
          Francis Liu
        51. HBASE-6721_94_3.patch
          131 kB
          Francis Liu
        52. HBASE-6721_94_3.patch
          352 kB
          Francis Liu
        53. HBASE-6721_94_2.patch
          150 kB
          Francis Liu
        54. HBASE-6721_94.patch
          162 kB
          Francis Liu
        55. HBASE-6721_94.patch
          117 kB
          Francis Liu
        56. HBASE-6721-DesigDoc.pdf
          171 kB
          Vandana Ayyalasomayajula

          Issue Links

            Activity

              People

              • Assignee:
                toffer Francis Liu
                Reporter:
                toffer Francis Liu
              • Votes:
                2 Vote for this issue
                Watchers:
                70 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: