Your client connects to HBase for the first time to read a row user_1234 located in a table Users.
What process does your client use to find the correct RegionServer to which it should send the
The client looks up the location of ROOT, in which it looks up the location of META, in which it
looks up the location of the correct Users region.
The client looks up the location of the master, in which it looks up the location of META, in
which it looks up the location of the correct Users region.
The client looks up the location of ROOT in which it looks up the location of the correct Users
The client queries the master to find the location of the Users table.
*The general flow is that a new client contacts the Zookeeper quorum (a separate
cluster of Zookeeper nodes) first to find a particular row key. It does so by retrieving the server
name (i.e. host name) that hosts the -ROOT- region from Zookeeper. With that information it can
query that server to get the server that hosts the .META. table. Both of these two details are
cached and only looked up once. Lastly it can query the .META. server and retrieve the server that
has the row the client is looking for.
*The HBase client HTable is responsible for finding RegionServers that are serving the particular
row range of interest. It does this by querying the .META. and -ROOT- catalog tables.After locating
the required region(s), the client directly contacts the RegionServer serving that region (i.e., it does
not go through the master) and issues the read or write request. This information is cached in the
client so that subsequent requests need not go through the lookup process. Should a region be
reassigned either by the master load balancer or because a RegionServer has died, the client will
requery the catalog tables to determine the new location of the user region.
Reference:HBase Architecture 101 – Storage