Skip to content

Commit 6a060ad

Browse files
committed
HBASE-26397 Display the excluded datanodes on regionserver UI (#3990)
Signed-off-by: Duo Zhang <[email protected]>
1 parent 65c5ea6 commit 6a060ad

File tree

4 files changed

+37
-0
lines changed

4 files changed

+37
-0
lines changed

hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
package org.apache.hadoop.hbase.regionserver;
2020

21+
import java.util.List;
2122
import org.apache.yetus.audience.InterfaceAudience;
2223

2324
/**
@@ -80,6 +81,11 @@ public interface MetricsRegionServerWrapper {
8081
*/
8182
long getWALFileSize();
8283

84+
/**
85+
* Get the excluded datanodes in the cache of this region server.
86+
*/
87+
List<String> getWALExcludeDNs();
88+
8389
/**
8490
* Get the number of WAL files with slow appends for this region server.
8591
*/

hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.jamon

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,11 +153,17 @@ MetricsRegionServerWrapper mWrap;
153153
<tr>
154154
<th>Num. WAL Files</th>
155155
<th>Size. WAL Files</th>
156+
<th>WAL exclude DNs</th>
156157
</tr>
157158
</tr>
158159
<tr>
159160
<td><% mWrap.getNumWALFiles() %></td>
160161
<td><% TraditionalBinaryPrefix.long2String(mWrap.getWALFileSize(), "B", 1) %></td>
162+
<td>
163+
<%for String exclude: mWrap.getWALExcludeDNs() %>
164+
<% exclude %><br>
165+
</%for>
166+
</td>
161167
</tr>
162168
</table>
163169
</%def>

hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,15 @@
2020
import java.io.IOException;
2121
import java.util.ArrayList;
2222
import java.util.Collection;
23+
import java.util.Collections;
2324
import java.util.List;
2425
import java.util.Map;
2526
import java.util.OptionalDouble;
2627
import java.util.OptionalLong;
2728
import java.util.concurrent.ConcurrentHashMap;
2829
import java.util.concurrent.ScheduledExecutorService;
2930
import java.util.concurrent.TimeUnit;
31+
import java.util.stream.Collectors;
3032

3133
import org.apache.commons.lang3.StringUtils;
3234
import org.apache.hadoop.hbase.CompatibilitySingletonFactory;
@@ -36,6 +38,7 @@
3638
import org.apache.hadoop.hbase.ServerName;
3739
import org.apache.hadoop.hbase.io.ByteBuffAllocator;
3840
import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper;
41+
import org.apache.hadoop.hbase.io.asyncfs.monitor.ExcludeDatanodeManager;
3942
import org.apache.hadoop.hbase.io.hfile.BlockCache;
4043
import org.apache.hadoop.hbase.io.hfile.CacheStats;
4144
import org.apache.hadoop.hbase.io.hfile.CombinedBlockCache;
@@ -129,10 +132,13 @@ class MetricsRegionServerWrapperImpl
129132
*/
130133
private DFSHedgedReadMetrics dfsHedgedReadMetrics;
131134

135+
private final ExcludeDatanodeManager excludeDatanodeManager;
136+
132137
public MetricsRegionServerWrapperImpl(final HRegionServer regionServer) {
133138
this.regionServer = regionServer;
134139
initBlockCache();
135140
initMobFileCache();
141+
this.excludeDatanodeManager = this.regionServer.getWalFactory().getExcludeDatanodeManager();
136142

137143
this.period = regionServer.getConfiguration().getLong(HConstants.REGIONSERVER_METRICS_PERIOD,
138144
HConstants.DEFAULT_REGIONSERVER_METRICS_PERIOD);
@@ -397,6 +403,17 @@ public long getWALFileSize() {
397403
return walFileSize;
398404
}
399405

406+
@Override
407+
public List<String> getWALExcludeDNs() {
408+
if (excludeDatanodeManager == null) {
409+
return Collections.emptyList();
410+
}
411+
return excludeDatanodeManager.getExcludeDNs().entrySet()
412+
.stream()
413+
.map(e -> e.getKey().toString() + ", " + e.getValue())
414+
.collect(Collectors.toList());
415+
}
416+
400417
@Override
401418
public long getNumWALSlowAppend() {
402419
return metricsWALSource.getSlowAppendCount();

hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818

1919
package org.apache.hadoop.hbase.regionserver;
2020

21+
import java.util.Collections;
22+
import java.util.List;
23+
2124
public class MetricsRegionServerWrapperStub implements MetricsRegionServerWrapper {
2225

2326
@Override
@@ -365,6 +368,11 @@ public long getWALFileSize() {
365368
return 1024000;
366369
}
367370

371+
@Override
372+
public List<String> getWALExcludeDNs() {
373+
return Collections.emptyList();
374+
}
375+
368376
@Override
369377
public long getNumWALSlowAppend() {
370378
return 0;

0 commit comments

Comments
 (0)