diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncProcess.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncProcess.java index 888370c..251b01d 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncProcess.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncProcess.java @@ -19,7 +19,6 @@ package org.apache.hadoop.hbase.client; - import java.io.IOException; import java.io.InterruptedIOException; import java.util.ArrayList; @@ -211,9 +210,12 @@ class AsyncProcess { this.numTries = conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER); - this.maxTotalConcurrentTasks = conf.getInt("hbase.client.max.total.tasks", 100); - this.maxConcurrentTasksPerServer = conf.getInt("hbase.client.max.perserver.tasks", 5); - this.maxConcurrentTasksPerRegion = conf.getInt("hbase.client.max.perregion.tasks", 1); + this.maxTotalConcurrentTasks = conf.getInt(HConstants.HBASE_CLIENT_MAX_TOTAL_TASKS, + HConstants.DEFAULT_HBASE_CLIENT_MAX_TOTAL_TASKS); + this.maxConcurrentTasksPerServer = conf.getInt(HConstants.HBASE_CLIENT_MAX_PERSERVER_TASKS, + HConstants.DEFAULT_HBASE_CLIENT_MAX_PERSERVER_TASKS); + this.maxConcurrentTasksPerRegion = conf.getInt(HConstants.HBASE_CLIENT_MAX_PERREGION_TASKS, + HConstants.DEFAULT_HBASE_CLIENT_MAX_PERREGION_TASKS); if (this.maxTotalConcurrentTasks <= 0) { throw new IllegalArgumentException("maxTotalConcurrentTasks=" + maxTotalConcurrentTasks); diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java index a9275e1..26f247e 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java @@ -719,8 +719,9 @@ public class HConnectionManager { long keepAliveTime = conf.getLong( "hbase.hconnection.threads.keepalivetime", 60); LinkedBlockingQueue workQueue = - new LinkedBlockingQueue(128 * - conf.getInt("hbase.client.max.total.tasks", 200)); + new LinkedBlockingQueue(256 * + conf.getInt(HConstants.HBASE_CLIENT_MAX_TOTAL_TASKS, + HConstants.DEFAULT_HBASE_CLIENT_MAX_TOTAL_TASKS)); this.batchPool = new ThreadPoolExecutor( maxThreads, maxThreads, diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java index f0ad529..4051514 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java @@ -573,6 +573,38 @@ public final class HConstants { public static long DEFAULT_HBASE_CLIENT_PAUSE = 100; /** + * The maximum number of concurrent connections the client will maintain. + */ + public static final String HBASE_CLIENT_MAX_TOTAL_TASKS = "hbase.client.max.total.tasks"; + + /** + * Default value of {@link #HBASE_CLIENT_MAX_TOTAL_TASKS}. + */ + public static final int DEFAULT_HBASE_CLIENT_MAX_TOTAL_TASKS = 100; + + /** + * The maximum number of concurrent connections the client will maintain to a single + * RegionServer. + */ + public static final String HBASE_CLIENT_MAX_PERSERVER_TASKS = "hbase.client.max.perserver.tasks"; + + /** + * Default value of {@link #HBASE_CLIENT_MAX_PERSERVER_TASKS}. + */ + public static final int DEFAULT_HBASE_CLIENT_MAX_PERSERVER_TASKS = 5; + + /** + * The maximum number of concurrent connections the client will maintain to a single + * Region. + */ + public static final String HBASE_CLIENT_MAX_PERREGION_TASKS = "hbase.client.max.perregion.tasks"; + + /** + * Default value of {@link #HBASE_CLIENT_MAX_PERREGION_TASKS}. + */ + public static final int DEFAULT_HBASE_CLIENT_MAX_PERREGION_TASKS = 1; + + /** * Parameter name for server pause value, used mostly as value to wait before * running a retry of a failed operation. */ diff --git a/hbase-common/src/main/resources/hbase-default.xml b/hbase-common/src/main/resources/hbase-default.xml index b3242ae..7c37a45 100644 --- a/hbase-common/src/main/resources/hbase-default.xml +++ b/hbase-common/src/main/resources/hbase-default.xml @@ -448,6 +448,24 @@ possible configurations would overwhelm and obscure the important. ramps up. Change this setting and hbase.client.pause to suit your workload. + hbase.client.max.total.tasks + 100 + The maximum number of concurrent connections the client will + maintain. + + + hbase.client.max.perserver.tasks + 5 + The maximum number of concurrent connections the client will + maintain to a single RegionServer. + + + hbase.client.max.perregion.tasks + 1 + The maximum number of concurrent connections the client will + maintain to a single Region. + + hbase.client.scanner.caching 100 Number of rows that will be fetched when calling next