You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2013/01/21 00:10:33 UTC
svn commit: r1435998 - /hbase/trunk/src/docbkx/configuration.xml
Author: stack
Date: Sun Jan 20 23:10:33 2013
New Revision: 1435998
URL: http://svn.apache.org/viewvc?rev=1435998&view=rev
Log:
HBASE-5138 [ref manual] Add a discussion on the number of regions
Modified:
hbase/trunk/src/docbkx/configuration.xml
Modified: hbase/trunk/src/docbkx/configuration.xml
URL: http://svn.apache.org/viewvc/hbase/trunk/src/docbkx/configuration.xml?rev=1435998&r1=1435997&r2=1435998&view=diff
==============================================================================
--- hbase/trunk/src/docbkx/configuration.xml (original)
+++ hbase/trunk/src/docbkx/configuration.xml Sun Jan 20 23:10:33 2013
@@ -1051,6 +1051,38 @@ index e70ebc6..96f8c27 100644
RegionSize can also be set on a per-table basis via
<link xlink:href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/HTableDescriptor.html">HTableDescriptor</link>.
</para>
+ <section xml:id="too_many_regions">
+ <title>Too many regions</title>
+ <para>
+ Here are some issues you will run into when lots of regions per regionserver:
+ <unorderedlist>
+ <listitem><para>
+ MSLAB requires 2mb per memstore (that's 2mb per family per region).
+ 1000 regions that have 2 families each is 3.9GB of heap used, and it's not even storing data yet. NB: the 2MB value is configurable.
+ </para></listitem>
+ <listitem><para>If you fill all the regions at somewhat the same rate, the global memory usage makes it that it forces tiny
+ flushes when you have too many regions which in turn generates compactions.
+ Rewriting the same data tens of times is the last thing you want.
+ An example is filling 1000 regions (with one family) equally and let's consider a lower bound for global memstore
+ usage of 5GB (the region server would have a big heap).
+ Once it reaches 5GB it will force flush the biggest region,
+ at that point they should almost all have about 5MB of data so
+ it would flush that amount. 5MB inserted later, it would flush another
+ region that will now have a bit over 5MB of data, and so on.
+ </para></listitem>
+ <listitem><para>The master as is is allergic to tons of regions, and will
+ take a lot of time assigning them and moving them around in batches.
+ The reason is that it's heavy on ZK usage, and it's not very async
+ at the moment (could really be improved -- and has been imporoved a bunch
+ in 0.96 hbase).
+ </para></listitem>
+ </unorderedlist>
+ </para>
+ <para>Another issue is the effect of the number of regions on mapreduce jobs.
+ Keeping 5 regions per RS would be too low for a job, whereas 1000 will generate too many maps.
+ </para>
+
+ </section>
</section>
<section xml:id="disable.splitting">