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;
}