From b1b0db3195e08cd3742767996914e2ffa99f40cb Mon Sep 17 00:00:00 2001 From: Michael Stack Date: Tue, 27 Mar 2018 14:50:00 -0700 Subject: [PATCH] HBASE-20298 Doc change in read/write/total accounting metrics --- .../MetricsRegionServerSource.java | 32 +++++++++++-------- .../ipc/FastPathBalancedQueueRpcExecutor.java | 3 +- .../hbase/regionserver/HRegionServer.java | 14 ++------ src/main/asciidoc/_chapters/upgrading.adoc | 6 ++++ 4 files changed, 28 insertions(+), 27 deletions(-) diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java index 9a826e70aa5..4636fe0536e 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java @@ -238,26 +238,30 @@ public interface MetricsRegionServerSource extends BaseSource, JvmPauseMonitorSo String MIN_STORE_FILE_AGE = "minStoreFileAge"; String AVG_STORE_FILE_AGE = "avgStoreFileAge"; String NUM_REFERENCE_FILES = "numReferenceFiles"; - String MAX_STORE_FILE_AGE_DESC = "Max age of store files hosted on this region server"; - String MIN_STORE_FILE_AGE_DESC = "Min age of store files hosted on this region server"; - String AVG_STORE_FILE_AGE_DESC = "Average age of store files hosted on this region server"; - String NUM_REFERENCE_FILES_DESC = "Number of reference file on this region server"; + String MAX_STORE_FILE_AGE_DESC = "Max age of store files hosted on this RegionServer"; + String MIN_STORE_FILE_AGE_DESC = "Min age of store files hosted on this RegionServer"; + String AVG_STORE_FILE_AGE_DESC = "Average age of store files hosted on this RegionServer"; + String NUM_REFERENCE_FILES_DESC = "Number of reference file on this RegionServer"; String STOREFILE_SIZE_DESC = "Size of storefiles being served."; String TOTAL_REQUEST_COUNT = "totalRequestCount"; String TOTAL_REQUEST_COUNT_DESC = - "Total number of requests this RegionServer has answered."; + "Total number of requests this RegionServer has answered; increments the count once for " + + "EVERY access whether an admin operation, a Scan, a Put or Put of 1M rows, or a Get " + + "of a non-existent row"; String TOTAL_ROW_ACTION_REQUEST_COUNT = "totalRowActionRequestCount"; String TOTAL_ROW_ACTION_REQUEST_COUNT_DESC = - "Total number of region requests this RegionServer has answered, count by row-level action"; + "Total number of region requests this RegionServer has answered; counts by row-level " + + "action at the RPC Server (Sums 'readRequestsCount' and 'writeRequestsCount'); counts" + + "once per access whether a Put of 1M rows or a Get that returns 1M Results"; String READ_REQUEST_COUNT = "readRequestCount"; String READ_REQUEST_COUNT_DESC = - "Number of read requests this region server has answered."; + "Number of read requests with non-empty Results that this RegionServer has answered."; String FILTERED_READ_REQUEST_COUNT = "filteredReadRequestCount"; String FILTERED_READ_REQUEST_COUNT_DESC = - "Number of filtered read requests this region server has answered."; + "Number of filtered read requests this RegionServer has answered."; String WRITE_REQUEST_COUNT = "writeRequestCount"; String WRITE_REQUEST_COUNT_DESC = - "Number of mutation requests this region server has answered."; + "Number of mutation requests this RegionServer has answered."; String CHECK_MUTATE_FAILED_COUNT = "checkMutateFailedCount"; String CHECK_MUTATE_FAILED_COUNT_DESC = "Number of Check and Mutate calls that failed the checks."; @@ -527,17 +531,17 @@ public interface MetricsRegionServerSource extends BaseSource, JvmPauseMonitorSo = "Total number of bytes that is output from compaction, major only"; String RPC_GET_REQUEST_COUNT = "rpcGetRequestCount"; - String RPC_GET_REQUEST_COUNT_DESC = "Number of rpc get requests this region server has answered."; + String RPC_GET_REQUEST_COUNT_DESC = "Number of rpc get requests this RegionServer has answered."; String RPC_SCAN_REQUEST_COUNT = "rpcScanRequestCount"; String RPC_SCAN_REQUEST_COUNT_DESC = - "Number of rpc scan requests this region server has answered."; + "Number of rpc scan requests this RegionServer has answered."; String RPC_MULTI_REQUEST_COUNT = "rpcMultiRequestCount"; String RPC_MULTI_REQUEST_COUNT_DESC = - "Number of rpc multi requests this region server has answered."; + "Number of rpc multi requests this RegionServer has answered."; String RPC_MUTATE_REQUEST_COUNT = "rpcMutateRequestCount"; String RPC_MUTATE_REQUEST_COUNT_DESC = - "Number of rpc mutation requests this region server has answered."; + "Number of rpc mutation requests this RegionServer has answered."; String AVERAGE_REGION_SIZE = "averageRegionSize"; String AVERAGE_REGION_SIZE_DESC = - "Average region size over the region server including memstore and storefile sizes."; + "Average region size over the RegionServer including memstore and storefile sizes."; } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/FastPathBalancedQueueRpcExecutor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/FastPathBalancedQueueRpcExecutor.java index eaea34deef1..d9f9797282e 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/FastPathBalancedQueueRpcExecutor.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/FastPathBalancedQueueRpcExecutor.java @@ -80,6 +80,7 @@ public class FastPathBalancedQueueRpcExecutor extends BalancedQueueRpcExecutor { // if an empty queue of CallRunners so we are available for direct handoff when one comes in. final Deque fastPathHandlerStack; // Semaphore to coordinate loading of fastpathed loadedTask and our running it. + // UNFAIR synchronization. private Semaphore semaphore = new Semaphore(0); // The task we get when fast-pathing. private CallRunner loadedCallRunner; @@ -112,7 +113,7 @@ public class FastPathBalancedQueueRpcExecutor extends BalancedQueueRpcExecutor { } /** - * @param task Task gotten via fastpath. + * @param cr Task gotten via fastpath. * @return True if we successfully loaded our task */ boolean loadCallRunner(final CallRunner cr) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 54f3c8f1a7e..240de85e778 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -47,7 +47,6 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.function.Function; import javax.management.MalformedObjectNameException; -import javax.management.ObjectName; import javax.servlet.http.HttpServlet; import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.StringUtils; @@ -168,7 +167,6 @@ import org.apache.hadoop.hbase.zookeeper.ZKUtil; import org.apache.hadoop.hbase.zookeeper.ZKWatcher; import org.apache.hadoop.hbase.zookeeper.ZNodePaths; import org.apache.hadoop.ipc.RemoteException; -import org.apache.hadoop.metrics2.util.MBeans; import org.apache.hadoop.util.ReflectionUtils; import org.apache.yetus.audience.InterfaceAudience; import org.apache.zookeeper.KeeperException; @@ -459,11 +457,6 @@ public class HRegionServer extends HasThread implements */ protected String clusterId; - /** - * MX Bean for RegionServerInfo - */ - private ObjectName mxBean = null; - /** * Chore to clean periodically the moved region list */ @@ -1024,12 +1017,9 @@ public class HRegionServer extends HasThread implements abort(prefix + t.getMessage(), t); } } - // Run shutdown. - if (mxBean != null) { - MBeans.unregister(mxBean); - mxBean = null; + if (this.leases != null) { + this.leases.closeAfterLeasesExpire(); } - if (this.leases != null) this.leases.closeAfterLeasesExpire(); if (this.splitLogWorker != null) { splitLogWorker.stop(); } diff --git a/src/main/asciidoc/_chapters/upgrading.adoc b/src/main/asciidoc/_chapters/upgrading.adoc index 6f17089f382..acabf6cea49 100644 --- a/src/main/asciidoc/_chapters/upgrading.adoc +++ b/src/main/asciidoc/_chapters/upgrading.adoc @@ -418,11 +418,17 @@ The following metrics have changed names: The following metrics have changed their meaning: * The metric 'blockCacheEvictionCount' published on a per-region server basis no longer includes blocks removed from the cache due to the invalidation of the hfiles they are from (e.g. via compaction). +* The metric 'totalRequestCount' increments once per request; previously it incremented by the number of `Actions` carried in the request; e.g. if a request was a `multi` made of four Gets and two Puts, we'd increment 'totalRequestCount' by six; now we increment by one regardless. Expect to see lower values for this metric in hbase-2.0.0. +* The 'readRequestCount' now counts reads that return a non-empty row where in older hbases, we'd increment 'readRequestCount' whether a Result or not. This change will flatten the profile of the read-requests graphs if requests for non-existent rows. A YCSB read-heavy workload can do this dependent on how the database was loaded. The following metrics have been removed: * Metrics related to the Distributed Log Replay feature are no longer present. They were previsouly found in the region server context under the name 'replay'. See the section [[upgrade2.0.distributed.log.replay]] for details. +The following metrics have been added: + +* 'totalRowActionRequestCount' is a count of region row actions summing reads and writes. + [[upgrade2.0.zkconfig]] .ZooKeeper configs no longer read from zoo.cfg