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

RegionServer Group based Assignment

    XMLWordPrintableJSON

Details

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

        Issue Links

          Activity

            People

              toffer Francis Christopher Liu
              toffer Francis Christopher Liu
              Votes:
              2 Vote for this issue
              Watchers:
              62 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: