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 2010/08/08 17:59:46 UTC
svn commit: r983442 - in /hbase/trunk: CHANGES.txt
src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java
src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
src/main/resources/hbase-default.xml
Author: stack
Date: Sun Aug 8 15:59:46 2010
New Revision: 983442
URL: http://svn.apache.org/viewvc?rev=983442&view=rev
Log:
HBASE-2844 Capping the number of regions
Modified:
hbase/trunk/CHANGES.txt
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
hbase/trunk/src/main/resources/hbase-default.xml
Modified: hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=983442&r1=983441&r2=983442&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Sun Aug 8 15:59:46 2010
@@ -827,6 +827,7 @@ Release 0.21.0 - Unreleased
HBASE-2886 Add search box to site (Alex Baranau via Stack)
HBASE-2792 Create a better way to chain log cleaners
(Chongxin Li via Stack)
+ HBASE-2844 Capping the number of regions (Pranav Khaitan via Stack)
NEW FEATURES
HBASE-1961 HBase EC2 scripts
Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java?rev=983442&r1=983441&r2=983442&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java Sun Aug 8 15:59:46 2010
@@ -49,11 +49,20 @@ class CompactSplitThread extends Thread
private final HashSet<HRegion> regionsInQueue = new HashSet<HRegion>();
+ /**
+ * Splitting should not take place if the total number of regions exceed this.
+ * This is not a hard limit to the number of regions but it is a guideline to
+ * stop splitting after number of online regions is greater than this.
+ */
+ private int regionSplitLimit;
+
/** @param server */
public CompactSplitThread(HRegionServer server) {
super();
this.server = server;
this.conf = server.conf;
+ this.regionSplitLimit = conf.getInt("hbase.regionserver.regionSplitLimit",
+ Integer.MAX_VALUE);
this.frequency =
conf.getLong("hbase.regionserver.thread.splitcompactcheckfrequency",
20 * 1000);
@@ -73,7 +82,8 @@ class CompactSplitThread extends Thread
try {
// Don't interrupt us while we are working
byte [] midKey = r.compactStores();
- if (midKey != null && !this.server.isStopRequested()) {
+ if (shouldSplitRegion() && midKey != null &&
+ !this.server.isStopRequested()) {
split(r, midKey);
}
} finally {
@@ -190,4 +200,15 @@ class CompactSplitThread extends Thread
public int getCompactionQueueSize() {
return compactionQueue.size();
}
+
+ private boolean shouldSplitRegion() {
+ return (regionSplitLimit > server.getNumberOfOnlineRegions());
+ }
+
+ /**
+ * @return the regionSplitLimit
+ */
+ public int getRegionSplitLimit() {
+ return this.regionSplitLimit;
+ }
}
Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=983442&r1=983441&r2=983442&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Sun Aug 8 15:59:46 2010
@@ -2544,4 +2544,8 @@ public class HRegionServer implements HR
HRegionServer.class);
doMain(args, regionServerClass);
}
+
+ public int getNumberOfOnlineRegions() {
+ return onlineRegions.size();
+ }
}
\ No newline at end of file
Modified: hbase/trunk/src/main/resources/hbase-default.xml
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/resources/hbase-default.xml?rev=983442&r1=983441&r2=983442&view=diff
==============================================================================
--- hbase/trunk/src/main/resources/hbase-default.xml (original)
+++ hbase/trunk/src/main/resources/hbase-default.xml Sun Aug 8 15:59:46 2010
@@ -186,6 +186,15 @@
</description>
</property>
<property>
+ <name>hbase.regionserver.regionSplitLimit</name>
+ <value>2147483647</value>
+ <description>Limit for the number of regions after which no more region
+ splitting should take place. This is not a hard limit for the number of
+ regions but acts as a guideline for the regionserver to stop splitting after
+ a certain limit. Default is set to MAX_INT.
+ </description>
+ </property>
+ <property>
<name>hbase.regionserver.logroll.period</name>
<value>3600000</value>
<description>Period at which we will roll the commit log.</description>