From 7af0c44af34e9a22ae619451fff1972d0adee765 Mon Sep 17 00:00:00 2001 From: Yun Zhao Date: Mon, 11 Sep 2017 21:07:05 +0800 Subject: [PATCH] HBASE-18662 The default values for many configuration items in the code are not consistent with hbase-default.xml Signed-off-by: Chia-Ping Tsai --- .../hadoop/hbase/client/ConnectionConfiguration.java | 2 +- .../main/java/org/apache/hadoop/hbase/HConstants.java | 6 +++--- hbase-common/src/main/resources/hbase-default.xml | 6 +++--- .../java/org/apache/hadoop/hbase/rest/RESTServer.java | 3 ++- .../java/org/apache/hadoop/hbase/http/HttpServer.java | 8 ++++---- .../java/org/apache/hadoop/hbase/ipc/RpcExecutor.java | 2 +- .../org/apache/hadoop/hbase/regionserver/HStore.java | 2 +- .../hadoop/hbase/regionserver/RegionSplitPolicy.java | 3 ++- .../org/apache/hadoop/hbase/regionserver/wal/FSHLog.java | 2 +- .../java/org/apache/hadoop/hbase/util/FSHDFSUtils.java | 4 ++-- src/main/asciidoc/_chapters/hbase-default.adoc | 9 +++++---- 11 files changed, 25 insertions(+), 22 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionConfiguration.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionConfiguration.java index 6727929fa60..ec3733d5e6a 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionConfiguration.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionConfiguration.java @@ -31,7 +31,7 @@ public class ConnectionConfiguration { public static final String WRITE_BUFFER_SIZE_KEY = "hbase.client.write.buffer"; public static final long WRITE_BUFFER_SIZE_DEFAULT = 2097152; public static final String MAX_KEYVALUE_SIZE_KEY = "hbase.client.keyvalue.maxsize"; - public static final int MAX_KEYVALUE_SIZE_DEFAULT = -1; + public static final int MAX_KEYVALUE_SIZE_DEFAULT = 10485760; private final long writeBufferSize; private final int metaOperationTimeout; 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 8ed3508f23b..fd45d2c7bd5 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 @@ -244,7 +244,7 @@ public final class HConstants { public static final String ZK_SESSION_TIMEOUT = "zookeeper.session.timeout"; /** Default value for ZooKeeper session timeout */ - public static final int DEFAULT_ZK_SESSION_TIMEOUT = 180 * 1000; + public static final int DEFAULT_ZK_SESSION_TIMEOUT = 90 * 1000; /** Parameter name for port region server listens on. */ public static final String REGIONSERVER_PORT = "hbase.regionserver.port"; @@ -798,7 +798,7 @@ public final class HConstants { /** * Default value of {@link #HBASE_CLIENT_RETRIES_NUMBER}. */ - public static final int DEFAULT_HBASE_CLIENT_RETRIES_NUMBER = 31; + public static final int DEFAULT_HBASE_CLIENT_RETRIES_NUMBER = 35; /** * Parameter name to set the default scanner caching for all clients. @@ -1356,7 +1356,7 @@ public final class HConstants { public static final String SNAPSHOT_RESTORE_TAKE_FAILSAFE_SNAPSHOT = "hbase.snapshot.restore.take.failsafe.snapshot"; - public static final boolean DEFAULT_SNAPSHOT_RESTORE_TAKE_FAILSAFE_SNAPSHOT = false; + public static final boolean DEFAULT_SNAPSHOT_RESTORE_TAKE_FAILSAFE_SNAPSHOT = true; public static final String SNAPSHOT_RESTORE_FAILSAFE_NAME = "hbase.snapshot.restore.failsafe.name"; diff --git a/hbase-common/src/main/resources/hbase-default.xml b/hbase-common/src/main/resources/hbase-default.xml index 01c4c5809e5..379cdd9a334 100644 --- a/hbase-common/src/main/resources/hbase-default.xml +++ b/hbase-common/src/main/resources/hbase-default.xml @@ -323,7 +323,7 @@ possible configurations would overwhelm and obscure the important. A split policy determines when a region should be split. The various other split policies that are available currently are BusyRegionSplitPolicy, ConstantSizeRegionSplitPolicy, DisabledRegionSplitPolicy, - DelimitedKeyPrefixRegionSplitPolicy, and KeyPrefixRegionSplitPolicy. + DelimitedKeyPrefixRegionSplitPolicy, KeyPrefixRegionSplitPolicy, and SteppingSplitPolicy. DisabledRegionSplitPolicy blocks manual region splitting. @@ -490,7 +490,7 @@ possible configurations would overwhelm and obscure the important. hbase.client.max.perserver.tasks - 5 + 2 The maximum number of concurrent mutation tasks a single HTable instance will send to a single region server. @@ -581,7 +581,7 @@ possible configurations would overwhelm and obscure the important. hbase.normalizer.period - 1800000 + 300000 Period at which the region normalizer runs in the Master. diff --git a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java index 95b34713190..278b6a6e028 100644 --- a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java +++ b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java @@ -41,6 +41,7 @@ import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HBaseInterfaceAudience; import org.apache.hadoop.hbase.http.InfoServer; import org.apache.hadoop.hbase.rest.filter.AuthFilter; +import org.apache.hadoop.hbase.rest.filter.GzipFilter; import org.apache.hadoop.hbase.rest.filter.RestCsrfPreventionFilter; import org.apache.hadoop.hbase.security.UserProvider; import org.apache.hadoop.hbase.util.DNS; @@ -337,7 +338,7 @@ public class RESTServer implements Constants { // Load filters from configuration. String[] filterClasses = servlet.getConfiguration().getStrings(FILTER_CLASSES, - ArrayUtils.EMPTY_STRING_ARRAY); + GzipFilter.class.getName()); for (String filter : filterClasses) { filter = filter.trim(); ctxHandler.addFilter(filter, PATH_SPEC_ANY, EnumSet.of(DispatcherType.REQUEST)); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java index c9561e8c64a..c7e8fe1956a 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java @@ -513,10 +513,10 @@ public class HttpServer implements FilterContainer { final String appDir = getWebAppsPath(b.name); - int maxThreads = b.conf.getInt(HTTP_MAX_THREADS, -1); - // If HTTP_MAX_THREADS is not configured, QueueThreadPool() will use the - // default value (currently 250). - QueuedThreadPool threadPool = maxThreads == -1 ? new QueuedThreadPool() + int maxThreads = b.conf.getInt(HTTP_MAX_THREADS, 16); + // If HTTP_MAX_THREADS is less than or equal to 0, QueueThreadPool() will use the + // default value (currently 200). + QueuedThreadPool threadPool = maxThreads <= 0 ? new QueuedThreadPool() : new QueuedThreadPool(maxThreads); threadPool.setDaemon(true); this.webServer = new Server(threadPool); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcExecutor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcExecutor.java index 301f0e79a72..0096f767c02 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcExecutor.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcExecutor.java @@ -112,7 +112,7 @@ public abstract class RpcExecutor { this.conf = conf; this.abortable = abortable; - float callQueuesHandlersFactor = this.conf.getFloat(CALL_QUEUE_HANDLER_FACTOR_CONF_KEY, 0); + float callQueuesHandlersFactor = this.conf.getFloat(CALL_QUEUE_HANDLER_FACTOR_CONF_KEY, 0.1f); this.numCallQueues = computeNumCallQueues(handlerCount, callQueuesHandlersFactor); this.queues = new ArrayList<>(this.numCallQueues); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java index df1fdec54bc..11584ee5612 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java @@ -124,7 +124,7 @@ public class HStore implements Store { // keep in accordance with HDFS default storage policy public static final String DEFAULT_BLOCK_STORAGE_POLICY = "HOT"; public static final int DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER = 1000; - public static final int DEFAULT_BLOCKING_STOREFILE_COUNT = 7; + public static final int DEFAULT_BLOCKING_STOREFILE_COUNT = 10; private static final Log LOG = LogFactory.getLog(HStore.class); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.java index 2249de867d4..0217aa9dd01 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionSplitPolicy.java @@ -33,6 +33,7 @@ import org.apache.hadoop.hbase.shaded.com.google.common.base.Preconditions; /** * A split policy determines when a region should be split. + * @see SteppingSplitPolicy Default split policy since 2.0.0 * @see IncreasingToUpperBoundRegionSplitPolicy Default split policy since * 0.94.0 * @see ConstantSizeRegionSplitPolicy Default split policy before 0.94.0 @@ -40,7 +41,7 @@ import org.apache.hadoop.hbase.shaded.com.google.common.base.Preconditions; @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG) public abstract class RegionSplitPolicy extends Configured { private static final Class - DEFAULT_SPLIT_POLICY_CLASS = IncreasingToUpperBoundRegionSplitPolicy.class; + DEFAULT_SPLIT_POLICY_CLASS = SteppingSplitPolicy.class; /** * The region configured for this split policy. diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java index 0aa0eb87946..3b25e15c9d8 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java @@ -216,7 +216,7 @@ public class FSHLog extends AbstractFSWAL { FSUtils.getDefaultReplication(fs, this.walDir)); this.lowReplicationRollLimit = conf.getInt("hbase.regionserver.hlog.lowreplication.rolllimit", 5); - this.closeErrorsTolerated = conf.getInt("hbase.regionserver.logroll.errors.tolerated", 0); + this.closeErrorsTolerated = conf.getInt("hbase.regionserver.logroll.errors.tolerated", 2); // rollWriter sets this.hdfs_out if it can. rollWriter(); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSHDFSUtils.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSHDFSUtils.java index 5817a77b786..5677ca420c4 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSHDFSUtils.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSHDFSUtils.java @@ -201,11 +201,11 @@ public class FSHDFSUtils extends FSUtils { // This setting should be a little bit above what the cluster dfs heartbeat is set to. long firstPause = conf.getInt("hbase.lease.recovery.first.pause", 4000); // This should be set to how long it'll take for us to timeout against primary datanode if it - // is dead. We set it to 61 seconds, 1 second than the default READ_TIMEOUT in HDFS, the + // is dead. We set it to 64 seconds, 4 second than the default READ_TIMEOUT in HDFS, the // default value for DFS_CLIENT_SOCKET_TIMEOUT_KEY. If recovery is still failing after this // timeout, then further recovery will take liner backoff with this base, to avoid endless // preemptions when this value is not properly configured. - long subsequentPauseBase = conf.getLong("hbase.lease.recovery.dfs.timeout", 61 * 1000); + long subsequentPauseBase = conf.getLong("hbase.lease.recovery.dfs.timeout", 64 * 1000); Method isFileClosedMeth = null; // whether we need to look for isFileClosed method diff --git a/src/main/asciidoc/_chapters/hbase-default.adoc b/src/main/asciidoc/_chapters/hbase-default.adoc index 60c084919d8..fa5f5ab06bc 100644 --- a/src/main/asciidoc/_chapters/hbase-default.adoc +++ b/src/main/asciidoc/_chapters/hbase-default.adoc @@ -461,11 +461,12 @@ The host name or IP address of the name server (DNS) A split policy determines when a region should be split. The various other split policies that are available currently are ConstantSizeRegionSplitPolicy, DisabledRegionSplitPolicy, - DelimitedKeyPrefixRegionSplitPolicy, KeyPrefixRegionSplitPolicy etc. + DelimitedKeyPrefixRegionSplitPolicy, KeyPrefixRegionSplitPolicy, + BusyRegionSplitPolicy, SteppingSplitPolicy etc. + .Default -`org.apache.hadoop.hbase.regionserver.IncreasingToUpperBoundRegionSplitPolicy` +`org.apache.hadoop.hbase.regionserver.SteppingSplitPolicy` [[zookeeper.session.timeout]] @@ -694,7 +695,7 @@ The maximum number of concurrent tasks a single HTable instance will send to a single region server. + .Default -`5` +`2` [[hbase.client.max.perregion.tasks]] @@ -2111,7 +2112,7 @@ Fully qualified name of class implementing coordinated state manager. + .Default -`10` +`16` [[hbase.replication.rpc.codec]]