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