The {@code NoSuchRegionException} is an integral part of the way HBasework. HBase clients keep a local cache of where they think each region is in the cluster, but in practice things aren't static, and regions will move due to load balancing, or get split into two new regions due to write activity. When this happens, clients find out "the hard way" that their RPC failed because the region they tried to get to is no longer there. This causes the client to invalidate its local cache entry for this region and perform a {@code .META.} lookup to find where this regionhas moved, or find the new region to use in case of a split.
While {@code NoSuchRegionException} are expected to happen due to loadbalancing or write load, they tend to have a large performance impact as they force the clients to back off and repeatedly poll the cluster to find the new location of the region. So it's good to keep an eye on the rate at which they happen to make sure it remains fairly constant and low.
In a high write throughput application, if this value increases too quickly it typically indicates that there are too few regions, so splits are happening too often. In this case you should manually split the hot regions in order to better distribute the write load.
This number is a subset of {@link #numRpcDelayedDueToNSRE}, because each {@code NoSuchRegionException} causes multiple RPCs to be delayed.
|
|