HBASE-3877 Determine Proper Defaults for Compaction ThreadPools

git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1102105 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nicolas Spiegelberg 2011-05-11 21:50:37 +00:00
parent dedc82a653
commit dc2659524a
2 changed files with 16 additions and 3 deletions

View File

@ -214,6 +214,7 @@ Release 0.91.0 - Unreleased
(dhruba borthakur) (dhruba borthakur)
HBASE-3797 StoreFile Level Compaction Locking HBASE-3797 StoreFile Level Compaction Locking
HBASE-1476 Multithreaded Compactions HBASE-1476 Multithreaded Compactions
HBASE-3877 Determine Proper Defaults for Compaction ThreadPools
TASKS TASKS
HBASE-3559 Move report of split to master OFF the heartbeat channel HBASE-3559 Move report of split to master OFF the heartbeat channel

View File

@ -28,6 +28,8 @@ import java.util.concurrent.TimeUnit;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest; import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
@ -70,9 +72,19 @@ public class CompactSplitThread implements CompactionRequestor {
int largeThreads = Math.max(1, conf.getInt( int largeThreads = Math.max(1, conf.getInt(
"hbase.regionserver.thread.compaction.large", 1)); "hbase.regionserver.thread.compaction.large", 1));
int smallThreads = conf.getInt( int smallThreads = conf.getInt(
"hbase.regionserver.thread.compaction.small", 0); "hbase.regionserver.thread.compaction.small", 1);
if (conf.get("hbase.regionserver.thread.compaction.throttle") != null) {
throttleSize = conf.getLong( throttleSize = conf.getLong(
"hbase.regionserver.thread.compaction.throttle", 0); "hbase.regionserver.thread.compaction.throttle", 0);
} else {
// we have a complicated default. see HBASE-3877
long flushSize = conf.getLong("hbase.hregion.memstore.flush.size",
HTableDescriptor.DEFAULT_MEMSTORE_FLUSH_SIZE);
long splitSize = conf.getLong("hbase.hregion.max.filesize",
HConstants.DEFAULT_MAX_FILE_SIZE);
throttleSize = Math.min(flushSize * 2, splitSize / 2);
}
int splitThreads = conf.getInt("hbase.regionserver.thread.split", 1); int splitThreads = conf.getInt("hbase.regionserver.thread.split", 1);
// if we have throttle threads, make sure the user also specified size // if we have throttle threads, make sure the user also specified size