HBASE-15163 Add sampling code and metrics for get/scan/multi/mutate count separately (Yu Li)
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/eacf7bcf Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/eacf7bcf Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/eacf7bcf Branch: refs/heads/hbase-12439 Commit: eacf7bcf97f09c9a6e68baf9a4a9ceb1d83c9fb0 Parents: d82ae42 Author: stack <[email protected]> Authored: Sat Feb 6 06:30:56 2016 -0800 Committer: stack <[email protected]> Committed: Sat Feb 6 06:30:56 2016 -0800 ---------------------------------------------------------------------- .../regionserver/MetricsRegionServerSource.java | 12 ++++++++++++ .../MetricsRegionServerWrapper.java | 20 ++++++++++++++++++++ .../MetricsRegionServerSourceImpl.java | 8 ++++++++ .../hbase/regionserver/HRegionServer.java | 4 ++++ .../MetricsRegionServerWrapperImpl.java | 20 ++++++++++++++++++++ .../hbase/regionserver/RSRpcServices.java | 17 +++++++++++++++++ .../MetricsRegionServerWrapperStub.java | 20 ++++++++++++++++++++ 7 files changed, 101 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/eacf7bcf/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java ---------------------------------------------------------------------- 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 e4df1c0..0f2f90b 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 @@ -330,4 +330,16 @@ public interface MetricsRegionServerSource extends BaseSource { String SPLIT_SUCCESS_KEY = "splitSuccessCount"; String SPLIT_SUCCESS_DESC = "Number of successfully executed splits"; String FLUSH_KEY = "flushTime"; + + String RPC_GET_REQUEST_COUNT = "rpcGetRequestCount"; + String RPC_GET_REQUEST_COUNT_DESC = "Number of rpc get requests this region server has answered."; + String RPC_SCAN_REQUEST_COUNT = "rpcScanRequestCount"; + String RPC_SCAN_REQUEST_COUNT_DESC = + "Number of rpc scan requests this region server has answered."; + String RPC_MULTI_REQUEST_COUNT = "rpcMultiRequestCount"; + String RPC_MULTI_REQUEST_COUNT_DESC = + "Number of rpc multi requests this region server has answered."; + String RPC_MUTATE_REQUEST_COUNT = "rpcMutateRequestCount"; + String RPC_MUTATE_REQUEST_COUNT_DESC = + "Number of rpc mutation requests this region server has answered."; } http://git-wip-us.apache.org/repos/asf/hbase/blob/eacf7bcf/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java index 07c3773..ee2b5a1 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java @@ -372,4 +372,24 @@ public interface MetricsRegionServerWrapper { * @return Count of requests blocked because the memstore size is larger than blockingMemStoreSize */ long getBlockedRequestsCount(); + + /** + * Get the number of rpc get requests to this region server. + */ + long getRpcGetRequestsCount(); + + /** + * Get the number of rpc scan requests to this region server. + */ + long getRpcScanRequestsCount(); + + /** + * Get the number of rpc multi requests to this region server. + */ + long getRpcMultiRequestsCount(); + + /** + * Get the number of rpc mutate requests to this region server. + */ + long getRpcMutateRequestsCount(); } http://git-wip-us.apache.org/repos/asf/hbase/blob/eacf7bcf/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java index 42476a7..9134f46 100644 --- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java +++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java @@ -205,6 +205,14 @@ public class MetricsRegionServerSourceImpl rsWrap.getFilteredReadRequestsCount()) .addCounter(Interns.info(WRITE_REQUEST_COUNT, WRITE_REQUEST_COUNT_DESC), rsWrap.getWriteRequestsCount()) + .addCounter(Interns.info(RPC_GET_REQUEST_COUNT, RPC_GET_REQUEST_COUNT_DESC), + rsWrap.getRpcGetRequestsCount()) + .addCounter(Interns.info(RPC_SCAN_REQUEST_COUNT, RPC_SCAN_REQUEST_COUNT_DESC), + rsWrap.getRpcScanRequestsCount()) + .addCounter(Interns.info(RPC_MULTI_REQUEST_COUNT, RPC_MULTI_REQUEST_COUNT_DESC), + rsWrap.getRpcMultiRequestsCount()) + .addCounter(Interns.info(RPC_MUTATE_REQUEST_COUNT, RPC_MUTATE_REQUEST_COUNT_DESC), + rsWrap.getRpcMutateRequestsCount()) .addCounter(Interns.info(CHECK_MUTATE_FAILED_COUNT, CHECK_MUTATE_FAILED_COUNT_DESC), rsWrap.getCheckAndMutateChecksFailed()) .addCounter(Interns.info(CHECK_MUTATE_PASSED_COUNT, CHECK_MUTATE_PASSED_COUNT_DESC), http://git-wip-us.apache.org/repos/asf/hbase/blob/eacf7bcf/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java ---------------------------------------------------------------------- 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 9cb100f..4ab2693 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 @@ -2331,6 +2331,10 @@ public class HRegionServer extends HasThread implements RegionServerStartupResponse result = null; try { rpcServices.requestCount.set(0); + rpcServices.rpcGetRequestCount.set(0); + rpcServices.rpcScanRequestCount.set(0); + rpcServices.rpcMultiRequestCount.set(0); + rpcServices.rpcMutateRequestCount.set(0); LOG.info("reportForDuty to master=" + masterServerName + " with port=" + rpcServices.isa.getPort() + ", startcode=" + this.startcode); long now = EnvironmentEdgeManager.currentTime(); http://git-wip-us.apache.org/repos/asf/hbase/blob/eacf7bcf/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java index 4f9ba5b..777c960 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java @@ -419,6 +419,26 @@ class MetricsRegionServerWrapperImpl } @Override + public long getRpcGetRequestsCount() { + return regionServer.rpcServices.rpcGetRequestCount.get(); + } + + @Override + public long getRpcScanRequestsCount() { + return regionServer.rpcServices.rpcScanRequestCount.get(); + } + + @Override + public long getRpcMultiRequestsCount() { + return regionServer.rpcServices.rpcMultiRequestCount.get(); + } + + @Override + public long getRpcMutateRequestsCount() { + return regionServer.rpcServices.rpcMutateRequestCount.get(); + } + + @Override public long getCheckAndMutateChecksFailed() { return checkAndMutateChecksFailed; } http://git-wip-us.apache.org/repos/asf/hbase/blob/eacf7bcf/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java index e346c34..7bcde52 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java @@ -220,6 +220,19 @@ public class RSRpcServices implements HBaseRPCErrorHandler, // Request counter. (Includes requests that are not serviced by regions.) final Counter requestCount = new Counter(); + + // Request counter for rpc get + final Counter rpcGetRequestCount = new Counter(); + + // Request counter for rpc scan + final Counter rpcScanRequestCount = new Counter(); + + // Request counter for rpc multi + final Counter rpcMultiRequestCount = new Counter(); + + // Request counter for rpc mutate + final Counter rpcMutateRequestCount = new Counter(); + // Server to handle client requests. final RpcServerInterface rpcServer; final InetSocketAddress isa; @@ -2091,6 +2104,7 @@ public class RSRpcServices implements HBaseRPCErrorHandler, try { checkOpen(); requestCount.increment(); + rpcGetRequestCount.increment(); Region region = getRegion(request.getRegion()); GetResponse.Builder builder = GetResponse.newBuilder(); @@ -2231,6 +2245,7 @@ public class RSRpcServices implements HBaseRPCErrorHandler, Boolean processed = null; RegionScannersCloseCallBack closeCallBack = null; RpcCallContext context = RpcServer.getCurrentCall(); + this.rpcMultiRequestCount.increment(); for (RegionAction regionAction : request.getRegionActionList()) { this.requestCount.add(regionAction.getActionCount()); OperationQuota quota; @@ -2352,6 +2367,7 @@ public class RSRpcServices implements HBaseRPCErrorHandler, try { checkOpen(); requestCount.increment(); + rpcMutateRequestCount.increment(); Region region = getRegion(request.getRegion()); MutateResponse.Builder builder = MutateResponse.newBuilder(); MutationProto mutation = request.getMutation(); @@ -2496,6 +2512,7 @@ public class RSRpcServices implements HBaseRPCErrorHandler, throw e; } requestCount.increment(); + rpcScanRequestCount.increment(); int ttl = 0; Region region = null; http://git-wip-us.apache.org/repos/asf/hbase/blob/eacf7bcf/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java index 4b00632..95a7cf5 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java @@ -96,6 +96,26 @@ public class MetricsRegionServerWrapperStub implements MetricsRegionServerWrappe } @Override + public long getRpcGetRequestsCount() { + return 521; + } + + @Override + public long getRpcScanRequestsCount() { + return 101; + } + + @Override + public long getRpcMultiRequestsCount() { + return 486; + } + + @Override + public long getRpcMutateRequestsCount() { + return 606; + } + + @Override public long getCheckAndMutateChecksFailed() { return 401; }
