You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zg...@apache.org on 2020/07/10 07:12:28 UTC

[hbase] branch branch-2 updated (3a33f64 -> ff2951e)

This is an automated email from the ASF dual-hosted git repository.

zghao pushed a change to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git.


    from 3a33f64  HBASE-22738 Fallback to default group to choose RS when there are no RS in current group (#2039)
     new eee467d  HBASE-24653 Show snapshot owner on Master WebUI (#2016)
     new ff2951e  HBASE-24663 Add procedure process time statistics UI (#2035)

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../hadoop/hbase/metrics/impl/HistogramImpl.java   |  8 +++
 .../hbase/tmpl/master/MasterStatusTmpl.jamon       |  8 +++
 .../resources/hbase-webapps/master/procedures.jsp  | 64 ++++++++++++++++++++++
 .../hbase-webapps/master/snapshotsStats.jsp        | 10 +++-
 4 files changed, 87 insertions(+), 3 deletions(-)


[hbase] 01/02: HBASE-24653 Show snapshot owner on Master WebUI (#2016)

Posted by zg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zghao pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit eee467d119249ffcc664b2c1078579a5c4f88276
Author: niuyulin <ny...@163.com>
AuthorDate: Fri Jul 10 15:03:05 2020 +0800

    HBASE-24653 Show snapshot owner on Master WebUI (#2016)
    
    Signed-off-by: Guanghao Zhang <zg...@apache.org>
---
 .../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon |  8 ++++++++
 .../src/main/resources/hbase-webapps/master/snapshotsStats.jsp | 10 +++++++---
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon
index e247e75..6c2a3b2 100644
--- a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon
+++ b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon
@@ -59,6 +59,7 @@ org.apache.hadoop.hbase.tool.CanaryTool;
 org.apache.hadoop.hbase.util.Bytes;
 org.apache.hadoop.hbase.util.CommonFSUtils;
 org.apache.hadoop.hbase.util.JvmVersion;
+org.apache.hadoop.hbase.util.PrettyPrinter;
 org.apache.hadoop.util.StringUtils;
 </%import>
 
@@ -664,6 +665,8 @@ AssignmentManager assignmentManager = master.getAssignmentManager();
         <th>Snapshot Name</th>
         <th>Table</th>
         <th>Creation Time</th>
+        <th>Owner</th>
+        <th>TTL</th>
     </tr>
     <%for SnapshotDescription snapshotDesc : snapshots%>
     <%java>
@@ -674,6 +677,11 @@ AssignmentManager assignmentManager = master.getAssignmentManager();
         <td><a href="table.jsp?name=<% snapshotTable.getNameAsString() %>"><% snapshotTable.getNameAsString() %></a>
         </td>
         <td><% new Date(snapshotDesc.getCreationTime()) %></td>
+        <td><% snapshotDesc.getOwner() %></td>
+
+        <td>
+          <% snapshotDesc.getTtl() == 0 ? "FOREVER": PrettyPrinter.format(String.valueOf(snapshotDesc.getTtl()), PrettyPrinter.Unit.TIME_INTERVAL) %>
+        </td>
     </tr>
     </%for>
     <p><% snapshots.size() %> snapshot(s) in set. [<a href="/snapshotsStats.jsp">Snapshot Storefile stats</a>]</p>
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp b/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp
index d270eb8..becdc68 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/snapshotsStats.jsp
@@ -30,6 +30,7 @@
   import="org.apache.hadoop.util.StringUtils"
   import="org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription"
 %>
+<%@ page import="org.apache.hadoop.hbase.util.PrettyPrinter" %>
 <%
   HMaster master = (HMaster)getServletContext().getAttribute(HMaster.MASTER);
   Configuration conf = master.getConfiguration();
@@ -65,7 +66,8 @@
         <th>Snapshot Name</th>
         <th>Table</th>
         <th>Creation Time</th>
-        <th>TTL(Sec)</th>
+        <th>Owner</th>
+        <th>TTL</th>
         <th>Shared Storefile Size</th>
         <th>Mob Storefile Size</th>
         <th>Archived Storefile Size</th>
@@ -83,11 +85,13 @@
       <td><a href="/table.jsp?name=<%= snapshotTable.getNameAsString() %>">
         <%= snapshotTable.getNameAsString() %></a></td>
       <td><%= new Date(snapshotDesc.getCreationTime()) %></td>
+      <td><%= snapshotDesc.getOwner() %></td>
       <td>
         <% if (snapshotDesc.getTtl() == 0) { %>
-          FOREVER
+        FOREVER
         <% } else { %>
-          <%= snapshotDesc.getTtl() %>
+        <%=PrettyPrinter
+          .format(String.valueOf(snapshotDesc.getTtl()), PrettyPrinter.Unit.TIME_INTERVAL)%>
         <% } %>
       </td>
       <td><%= StringUtils.humanReadableInt(stats.getSharedStoreFilesSize()) %></td>


[hbase] 02/02: HBASE-24663 Add procedure process time statistics UI (#2035)

Posted by zg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zghao pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit ff2951e6724ccd8d89b4ad75f26549cd7889c6f8
Author: Joseph295 <51...@qq.com>
AuthorDate: Fri Jul 10 15:03:52 2020 +0800

    HBASE-24663 Add procedure process time statistics UI (#2035)
    
    Signed-off-by: Guanghao Zhang <zg...@apache.org>
---
 .../hadoop/hbase/metrics/impl/HistogramImpl.java   |  8 +++
 .../resources/hbase-webapps/master/procedures.jsp  | 64 ++++++++++++++++++++++
 2 files changed, 72 insertions(+)

diff --git a/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/HistogramImpl.java b/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/HistogramImpl.java
index fd6a2b3..2e0aa55 100644
--- a/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/HistogramImpl.java
+++ b/hbase-metrics/src/main/java/org/apache/hadoop/hbase/metrics/impl/HistogramImpl.java
@@ -74,8 +74,16 @@ public class HistogramImpl implements Histogram {
     return this.histogram.getMax();
   }
 
+  public long getMin() {
+    return this.histogram.getMin();
+  }
+
   @Override
   public Snapshot snapshot() {
     return histogram.snapshotAndReset();
   }
+
+  public long[] getQuantiles(double[] quantiles) {
+    return histogram.getQuantiles(quantiles);
+  }
 }
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/procedures.jsp b/hbase-server/src/main/resources/hbase-webapps/master/procedures.jsp
index fd1971b..8e1e238 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/procedures.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/procedures.jsp
@@ -33,6 +33,20 @@
   import="org.apache.hadoop.hbase.procedure2.util.StringUtils"
   import="org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix"
 %>
+<%@ page import="org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure" %>
+<%@ page import="org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure" %>
+<%@ page import="org.apache.hadoop.hbase.master.assignment.OpenRegionProcedure" %>
+<%@ page import="org.apache.hadoop.hbase.master.assignment.CloseRegionProcedure" %>
+<%@ page import="org.apache.hadoop.hbase.metrics.OperationMetrics" %>
+<%@ page import="java.util.Map" %>
+<%@ page import="java.util.HashMap" %>
+<%@ page import="org.apache.hadoop.hbase.master.MetricsAssignmentManagerSource" %>
+<%@ page import="org.apache.hadoop.hbase.master.MetricsAssignmentManager" %>
+<%@ page import="org.apache.hadoop.hbase.procedure2.ProcedureMetrics" %>
+<%@ page import="org.apache.hadoop.hbase.metrics.Snapshot" %>
+<%@ page import="org.apache.hadoop.hbase.metrics.Histogram" %>
+<%@ page import="java.util.TreeMap" %>
+<%@ page import="org.apache.hadoop.hbase.metrics.impl.HistogramImpl" %>
 <%
   HMaster master = (HMaster) getServletContext().getAttribute(HMaster.MASTER);
   ProcedureExecutor<MasterProcedureEnv> procExecutor = master.getMasterProcedureExecutor();
@@ -55,6 +69,55 @@
 
 <div class="container-fluid content">
   <div class="row">
+    <div class="page-header">
+      <h1>Procedure Time Statistics</h1>
+    </div>
+  </div>
+  <p>We list proceduces completed successfully of the following types only: ServerCrashProcedure, TransitRegionStateProcedure,
+    OpenRegionProcedure, CloseRegionProcedure.</p>
+  <table class="table table-striped" width="90%" >
+    <tr>
+      <th>Type</th>
+      <th>min(ms)</th>
+      <th>50-percentile(ms)</th>
+      <th>90-percentile(ms)</th>
+      <th>max(ms)</th>
+    </tr>
+    <%
+      Map<String, ProcedureMetrics> latencyMetrics = new TreeMap<>();
+      MetricsAssignmentManager metricsAssignmentManagerSource =
+        procExecutor.getEnvironment().getAssignmentManager().getAssignmentManagerMetrics();
+      latencyMetrics.put("OpenRegionProcedure", metricsAssignmentManagerSource.getOpenProcMetrics());
+      latencyMetrics.put("CloseRegionProcedure", metricsAssignmentManagerSource.getCloseProcMetrics());
+      latencyMetrics.put("TransitionRegionProcedure#assignRegion", metricsAssignmentManagerSource.getAssignProcMetrics());
+      latencyMetrics.put("TransitionRegionProcedure#unassignRegion", metricsAssignmentManagerSource.getUnassignProcMetrics());
+      latencyMetrics.put("TransitionRegionProcedure#moveRegion", metricsAssignmentManagerSource.getMoveProcMetrics());
+      latencyMetrics.put("TransitionRegionProcedure#reopenRegion", metricsAssignmentManagerSource.getReopenProcMetrics());
+      latencyMetrics.put("ServerCrashProcedure", master.getMasterMetrics().getServerCrashProcMetrics());
+
+      double[] percentiles = new double[] { 0.5, 0.9};
+      for (Map.Entry<String, ProcedureMetrics> e : latencyMetrics.entrySet()) {
+        Histogram histogram = e.getValue().getTimeHisto();
+        if (histogram.getCount() == 0 || !(histogram instanceof HistogramImpl)) {
+          continue;
+        }
+        HistogramImpl histogramImpl = (HistogramImpl)histogram;
+        long[] percentileLatencies = histogramImpl.getQuantiles(percentiles);
+
+    %>
+    <tr>
+      <td><%= e.getKey() %></td>
+      <td><%= histogramImpl.getMin() %></td>
+      <td><%= percentileLatencies[0] %></td>
+      <td><%= percentileLatencies[1] %></td>
+      <td><%= histogramImpl.getMax() %></td>
+    </tr>
+    <% } %>
+  </table>
+</div>
+<br />
+<div class="container-fluid content">
+  <div class="row">
       <div class="page-header">
           <h1>Procedures</h1>
       </div>
@@ -103,6 +166,7 @@
   </table>
 </div>
 <br />
+
 <div class="container-fluid content">
   <div class="row">
       <div class="page-header">