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 04:53:59 UTC

[hbase] branch master 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 master
in repository https://gitbox.apache.org/repos/asf/hbase.git


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

commit 803afee777a16dc8446ea6e49e6559b260fb491c
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 e430533..32c73d6 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 c866892..806415e 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
@@ -149,11 +149,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 c33807a..8802715 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;
 import org.apache.hadoop.hbase.HConstants;
@@ -35,6 +37,7 @@ import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.client.RegionInfo;
 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;
@@ -130,10 +133,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);
@@ -399,6 +405,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 ac36199..ae9666d 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
@@ -376,6 +379,11 @@ public class MetricsRegionServerWrapperStub implements MetricsRegionServerWrappe
   }
 
   @Override
+  public List<String> getWALExcludeDNs() {
+    return Collections.emptyList();
+  }
+
+  @Override
   public long getNumWALSlowAppend() {
     return 0;
   }