From 33f340876dacefc88f3d1710e4762a6f4dd53b8f Mon Sep 17 00:00:00 2001 From: liangxs Date: Thu, 2 Jun 2022 23:53:03 +0800 Subject: [PATCH] HBASE-26962: Add mob info in web UI (#4359) Signed-off-by: Duo Zhang --- .../hbase-webapps/regionserver/region.jsp | 53 ++++++++++++++++++- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/hbase-server/src/main/resources/hbase-webapps/regionserver/region.jsp b/hbase-server/src/main/resources/hbase-webapps/regionserver/region.jsp index 1d98dd0225a4..ce0950d2d7be 100644 --- a/hbase-server/src/main/resources/hbase-webapps/regionserver/region.jsp +++ b/hbase-server/src/main/resources/hbase-webapps/regionserver/region.jsp @@ -18,16 +18,21 @@ */ --%> <%@ page contentType="text/html;charset=UTF-8" + import="java.net.URLEncoder" import="java.util.Collection" import="java.util.Date" import="java.util.List" + import="org.apache.hadoop.fs.FileStatus" import="org.apache.hadoop.fs.FileSystem" + import="org.apache.hadoop.fs.Path" import="org.apache.hadoop.hbase.client.RegionInfo" import="org.apache.hadoop.hbase.client.RegionInfoDisplay" + import="org.apache.hadoop.hbase.mob.MobUtils" + import="org.apache.hadoop.hbase.regionserver.HMobStore" import="org.apache.hadoop.hbase.regionserver.HRegionServer" - import="org.apache.hadoop.hbase.regionserver.HStoreFile" import="org.apache.hadoop.hbase.regionserver.HRegion" import="org.apache.hadoop.hbase.regionserver.HStore" + import="org.apache.hadoop.hbase.regionserver.HStoreFile" %> <%@ page import="java.nio.charset.StandardCharsets" %> <% @@ -99,7 +104,51 @@

<%= count %> StoreFile(s) in set. <%= isReplicaRegion ? "The information about storefile(s) may not up-to-date because it's not the primary region." : "" %>

- <% } + + <% if (store instanceof HMobStore) { %> +

MOB Files

+ + + + + + + + <% + int mobCnt = 0; + for (HStoreFile sf : storeFiles) { + try { + byte[] value = sf.getMetadataValue(HStoreFile.MOB_FILE_REFS); + if (value == null) { + continue; + } + + Collection fileNames = MobUtils.deserializeMobFileRefs(value).build().values(); + mobCnt += fileNames.size(); + for (String fileName : fileNames) { + Path mobPath = new Path(((HMobStore) store).getPath(), fileName); + FileStatus status = fs.getFileStatus(mobPath); + String mobPathStr = mobPath.toString(); + String encodedStr = URLEncoder.encode(mobPathStr, StandardCharsets.UTF_8.toString()); %> + + + + + + + + <% } + } catch (Exception e) { %> + + + + <% } + } %> + +

<%= mobCnt %> MobFile(s) in set.

+
MOB FileSize (MB)Modification time
<%= mobPathStr %><%= status.getLen() / 1024 / 1024 %><%= new Date(status.getModificationTime()) %>
<%= e %>
+ <% } + } }%>