You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ha...@apache.org on 2022/01/10 05:03:03 UTC

[hbase] branch branch-2 updated: HBASE-26397 Display the excluded datanodes on regionserver UI (#3990)

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

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


The following commit(s) were added to refs/heads/branch-2 by this push:
     new d9fae5c  HBASE-26397 Display the excluded datanodes on regionserver UI (#3990)
d9fae5c is described below

commit d9fae5cb67b496a3e7efd67df7199277c24056fb
Author: Xiaolin Ha <ha...@apache.org>
AuthorDate: Mon Jan 10 12:53:05 2022 +0800

    HBASE-26397 Display the excluded datanodes on regionserver UI (#3990)
    
    Signed-off-by: Duo Zhang <zh...@apache.org>
---
 .../hbase/regionserver/MetricsRegionServerWrapper.java  |  6 ++++++
 .../hbase/tmpl/regionserver/ServerMetricsTmpl.jamon     |  6 ++++++
 .../regionserver/MetricsRegionServerWrapperImpl.java    | 17 +++++++++++++++++
 .../regionserver/MetricsRegionServerWrapperStub.java    |  8 ++++++++
 4 files changed, 37 insertions(+)

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 f885753..295b1fc 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
@@ -18,6 +18,7 @@
 
 package org.apache.hadoop.hbase.regionserver;
 
+import java.util.List;
 import org.apache.yetus.audience.InterfaceAudience;
 
 /**
@@ -81,6 +82,11 @@ public interface MetricsRegionServerWrapper {
   long getWALFileSize();
 
   /**
+   * Get the excluded datanodes in the cache of this region server.
+   */
+  List<String> getWALExcludeDNs();
+
+  /**
    * Get the number of WAL files with slow appends for this region server.
    */
   long getNumWALSlowAppend();
diff --git a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.jamon b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.jamon
index bf94c5b..23752b2 100644
--- a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.jamon
+++ b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.jamon
@@ -153,11 +153,17 @@ MetricsRegionServerWrapper mWrap;
     <tr>
         <th>Num. WAL Files</th>
         <th>Size. WAL Files</th>
+        <th>WAL exclude DNs</th>
     </tr>
 </tr>
 <tr>
     <td><% mWrap.getNumWALFiles() %></td>
     <td><% TraditionalBinaryPrefix.long2String(mWrap.getWALFileSize(), "B", 1) %></td>
+    <td>
+        <%for String exclude: mWrap.getWALExcludeDNs() %>
+            <% exclude %><br>
+        </%for>
+    </td>
 </tr>
 </table>
 </%def>
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 b5466e7..9fe9092 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
@@ -20,6 +20,7 @@ package org.apache.hadoop.hbase.regionserver;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.OptionalDouble;
@@ -27,6 +28,7 @@ import java.util.OptionalLong;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.hadoop.hbase.CompatibilitySingletonFactory;
@@ -36,6 +38,7 @@ import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.io.ByteBuffAllocator;
 import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper;
+import org.apache.hadoop.hbase.io.asyncfs.monitor.ExcludeDatanodeManager;
 import org.apache.hadoop.hbase.io.hfile.BlockCache;
 import org.apache.hadoop.hbase.io.hfile.CacheStats;
 import org.apache.hadoop.hbase.io.hfile.CombinedBlockCache;
@@ -129,10 +132,13 @@ class MetricsRegionServerWrapperImpl
    */
   private DFSHedgedReadMetrics dfsHedgedReadMetrics;
 
+  private final ExcludeDatanodeManager excludeDatanodeManager;
+
   public MetricsRegionServerWrapperImpl(final HRegionServer regionServer) {
     this.regionServer = regionServer;
     initBlockCache();
     initMobFileCache();
+    this.excludeDatanodeManager = this.regionServer.getWalFactory().getExcludeDatanodeManager();
 
     this.period = regionServer.getConfiguration().getLong(HConstants.REGIONSERVER_METRICS_PERIOD,
       HConstants.DEFAULT_REGIONSERVER_METRICS_PERIOD);
@@ -398,6 +404,17 @@ class MetricsRegionServerWrapperImpl
   }
 
   @Override
+  public List<String> getWALExcludeDNs() {
+    if (excludeDatanodeManager == null) {
+      return Collections.emptyList();
+    }
+    return excludeDatanodeManager.getExcludeDNs().entrySet()
+      .stream()
+      .map(e -> e.getKey().toString() + ", " + e.getValue())
+      .collect(Collectors.toList());
+  }
+
+  @Override
   public long getNumWALSlowAppend() {
     return metricsWALSource.getSlowAppendCount();
   }
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 9a932c9..91a324c 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
@@ -18,6 +18,9 @@
 
 package org.apache.hadoop.hbase.regionserver;
 
+import java.util.Collections;
+import java.util.List;
+
 public class MetricsRegionServerWrapperStub implements MetricsRegionServerWrapper {
 
   @Override
@@ -366,6 +369,11 @@ public class MetricsRegionServerWrapperStub implements MetricsRegionServerWrappe
   }
 
   @Override
+  public List<String> getWALExcludeDNs() {
+    return Collections.emptyList();
+  }
+
+  @Override
   public long getNumWALSlowAppend() {
     return 0;
   }