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

Make Hbase Communication Support Virtual Network

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Resolved
    • Major
    • Resolution: Duplicate
    • None
    • None
    • Client, master
    • None

    Description

      Hbase only have one way to locate hmaster or hregionserver not like hdfs has two way to locate datanode used by name or hostname.

      I'm a engineer of cloud computing , and I'm in charge of to make Hbase as a cloud service.
      Our Hbase cloud service architecture shown as follows: 1.jpg

      1.VM
      User’s Hbase client work in vm and use virtual ip address to access hbase cluster.
      2.NAT
      Network Address Translation, vip(Virtual Network Address) to pip (Physical Network Address)
      3. HbaseCluster Service
      HbaseCluster Service work in physical network

      Problem
      Vm use vip to communicate with hbase cluster, but hbase have only one way to communicate with each server using host which is setting by parameters hbase.regionserver.hostname or hbase.master.hostname. When HMaster startup will publish master address and meta region server address in zookeeper, then the address is pip(Physical Network Address) . Because hbase cluster work in physical network. But the problem is that when vm get the address from zookeeper is pip, not vip. If I set host as vip, it will has problems for hbase cluster communication inside. so it needs two ways for communication setting by parameters.

      Solution
      1. protocol extend
      change strcut ServerName as

                message ServerName {
                    required string host_name = 1;
                   optional uint32 port = 2;
                   optional uint64 start_code = 3;
                    optional string name=4;  //new field 
               }
            

      It will be publish in zookeeper. We can choose host_name or name configured by parameters hbase.client.use.hostname

      2. metatable extend
      Add a column to hbase:meta named info:namelocation . So the original column info:server configured with hbase.regionserver.hostname, and the new column info:namelocation configured with hbase.regionserver.servername
      3. hbase-server
      When regionserver startup, configured hbase.regionserver.hostname as pip and configured hbase.regionserver.servername as vip. Then hbase.regionserver.hostname will be writed in ServerName's host_name, and hbase.regionserver.servername will be writed in ServerName's name.When hmaster startup, configured hbase.hmaster.hostname as pip and configured hbase.hmaster.servername as vip. Then hbase.hmaster.hostname will be writed in ServerName's host_name, and hbase.hmaster.servername will be writed in ServerName's name.
      4. hbase-client
      Add a parameters named hbase.client.use.hostname to use vip or pip.

      This patch is base on Hbase-1.3.0

      Attachments

        1. HBASE-18124.pdf
          55 kB
          liubangchen
        2. 1.jpg
          31 kB
          liubangchen

        Activity

          People

            liubangchen liubangchen
            liubangchen liubangchen
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: