Hi all,

we are using HBase 0.20.6 on a cluster of about 25 nodes with about 30k regions and are experiencing as issue which causes running M/R jobs to fail.
When we restart single RegionServer, then happens the following:
 1) all regions of that RS get reassigned to remaing (say 24) nodes
2) when the restarted RegionServer comes up, HMaster closes about 60 regions on all 24 nodes and assigns them back to the restarted node

Now, the step 1) is usually very quick (if we can assign 10 regions per heartbeat, we have 240 regions per heartbeat on the whole cluster). The step 2) seems problematic, because first about 1200 regions get unassigned, and then they get slowly assigned to the single RS (speed again 10 regions per heartbeat). This time causes clients of Maps connected to the regions to throw RetriesExhaustedException.

I'm aware that we can limit number of regions closed per RegionServer heartbeat by hbase.regions.close.max, but this config option seems a bit unsatisfactory, because as we increase size of the cluster, we will get more and more regions unassigned in single cluster heartbeat (say we limit this to 1, then we get 24 unassigned regions, but only 10 assigned per heartbeat). This led us to a solution, which seems quite simple. We have introduced new config option which is used to limit number of regions in transition. When regionsInTransition.size() crosses boundary, we temporarily stop load balancer. This seems to resolve our issue, because no region gets unassigned for long time and clients manage to recover within their number of retries.

My question is, is this s general issue and a new config option should be proposed, or I am missing something a we could have resolved the issue with some other config option tuning?

Thanks.
 Jan

Reply via email to