org.apache.hadoop.hbase.generated.master.rsgroup_jsp Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hbase-server Show documentation
Show all versions of hbase-server Show documentation
Server functionality for HBase
package org.apache.hadoop.hbase.generated.master;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import java.util.stream.Stream;
import java.util.stream.Collectors;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.RSGroupTableAccessor;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.RegionInfo;
import org.apache.hadoop.hbase.client.TableState;
import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.master.HMaster;
import org.apache.hadoop.hbase.master.RegionState;
import org.apache.hadoop.hbase.net.Address;
import org.apache.hadoop.hbase.rsgroup.RSGroupInfo;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.VersionInfo;
import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;
import org.apache.hadoop.hbase.ServerMetrics;
import org.apache.hadoop.hbase.Size;
import org.apache.hadoop.hbase.RegionMetrics;
public final class rsgroup_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent {
private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();
private static java.util.List _jspx_dependants;
private org.glassfish.jsp.api.ResourceInjector _jspx_resourceInjector;
public java.util.List getDependants() {
return _jspx_dependants;
}
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx_page_context = null;
try {
response.setContentType("text/html;charset=UTF-8");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
_jspx_resourceInjector = (org.glassfish.jsp.api.ResourceInjector) application.getAttribute("com.sun.appserv.jsp.resource.injector");
out.write("\n\n\n\n\n");
String rsGroupName = request.getParameter("name");
pageContext.setAttribute("pageTitle", "RSGroup: " + rsGroupName);
out.write('\n');
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "header.jsp" + "?" + org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("pageTitle", request.getCharacterEncoding())+ "=" + org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode((java.lang.String) org.apache.jasper.runtime.PageContextImpl.evaluateExpression("${pageTitle}", java.lang.String.class, (PageContext)_jspx_page_context, null), request.getCharacterEncoding()), out, false);
out.write("\n\n");
HMaster master = (HMaster)getServletContext().getAttribute(HMaster.MASTER);
RSGroupInfo rsGroupInfo = null;
if (!RSGroupTableAccessor.isRSGroupsEnabled(master.getConnection())) {
out.write("\n \n \n RSGroups are not enabled
\n \n \n ");
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "redirect.jsp", out, false);
out.write('\n');
} else if (rsGroupName == null || rsGroupName.isEmpty() ||
(rsGroupInfo = RSGroupTableAccessor.getRSGroupInfo(
master.getConnection(), Bytes.toBytes(rsGroupName))) == null) {
out.write("\n \n \n RSGroup: ");
out.print( rsGroupName );
out.write(" does not exist
\n \n \n ");
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "redirect.jsp", out, false);
out.write('\n');
} else {
List rsGroupServers = new ArrayList<>();
List rsGroupTables = new ArrayList<>();
rsGroupServers.addAll(rsGroupInfo.getServers());
rsGroupTables.addAll(rsGroupInfo.getTables());
Collections.sort(rsGroupServers);
rsGroupTables.sort((o1, o2) -> {
int compare = Bytes.compareTo(o1.getNamespace(), o2.getNamespace());
if (compare != 0)
return compare;
compare = Bytes.compareTo(o1.getQualifier(), o2.getQualifier());
if (compare != 0)
return compare;
return 0;
});
Map onlineServers = Collections.emptyMap();
Map serverMaping = Collections.emptyMap();
if (master.getServerManager() != null) {
onlineServers = master.getServerManager().getOnlineServers().entrySet().stream()
.collect(Collectors.toMap(p -> p.getKey().getAddress(), Map.Entry::getValue));
serverMaping =
master.getServerManager().getOnlineServers().entrySet().stream()
.collect(Collectors.toMap(p -> p.getKey().getAddress(), Map.Entry::getKey));
}
out.write("\n \n \n \n RSGroup: ");
out.print( rsGroupName );
out.write("
\n \n \n \n \n \n \n Region Servers
\n \n \n \n ");
if (rsGroupServers != null && rsGroupServers.size() > 0) {
out.write("\n \n - \n Base Stats\n
\n - \n Memory\n
\n - \n Requests\n
\n - \n Storefiles\n
\n - \n Compactions\n
\n
\n\n \n \n \n \n ServerName \n Start time \n Last contact \n Version \n Requests Per Second \n Num. Regions \n");
out.write(" \n ");
int totalRegions = 0;
int totalRequests = 0;
int inconsistentNodeNum = 0;
String masterVersion = VersionInfo.getVersion();
for (Address server: rsGroupServers) {
ServerName serverName = serverMaping.get(server);
if (serverName != null) {
ServerMetrics sl = onlineServers.get(server);
String version = master.getRegionServerVersion(serverName);
if (!masterVersion.equals(version)) {
inconsistentNodeNum ++;
}
double requestsPerSecond = 0.0;
int numRegionsOnline = 0;
long lastContact = 0;
if (sl != null) {
requestsPerSecond = sl.getRequestCountPerSecond();
numRegionsOnline = sl.getRegionMetrics().size();
totalRegions += sl.getRegionMetrics().size();
totalRequests += sl.getRequestCount();
lastContact = (System.currentTimeMillis() - sl.getReportTimestamp())/1000;
}
long startcode = serverName.getStartcode();
int infoPort = master.getRegionServerInfoPort(serverName);
String url = "//" + serverName.getHostname() + ":" + infoPort + "/rs-status";
out.write("\n \n ');
out.print( serverName.getServerName() );
out.write(" \n ");
out.print( new Date(startcode) );
out.write(" \n ");
out.print( lastContact );
out.write(" \n ");
out.print( version );
out.write(" \n ");
out.print( String.format("%.0f", requestsPerSecond) );
out.write(" \n ");
out.print( numRegionsOnline );
out.write(" \n \n ");
} else {
out.write("\n \n ");
out.print( server );
out.write(" \n ");
out.print( "Dead" );
out.write(" \n \n \n \n \n \n ");
}
out.write("\n ");
}
out.write("\n Total:");
out.print( rsGroupServers.size() );
out.write(" \n \n \n ");
if (inconsistentNodeNum > 0) {
out.write("\n ");
out.print( inconsistentNodeNum );
out.write(" nodes with inconsistent version \n ");
} else {
out.write("\n \n ");
}
out.write("\n ");
out.print( totalRequests );
out.write(" \n ");
out.print( totalRegions );
out.write(" \n \n
\n \n \n \n \n ServerName \n Used Heap \n Max Heap \n Memstore Size \n \n ");
for (Address server: rsGroupServers) {
ServerName serverName = serverMaping.get(server);
ServerMetrics sl = onlineServers.get(server);
if (sl != null && serverName != null) {
double memStoreSizeMB = sl.getRegionMetrics().values()
.stream().mapToDouble(rm -> rm.getMemStoreSize().get(Size.Unit.MEGABYTE))
.sum();
int infoPort = master.getRegionServerInfoPort(serverName);
String url = "//" + serverName.getHostname() + ":" + infoPort + "/rs-status";
out.write("\n \n ');
out.print( serverName.getServerName() );
out.write(" \n ");
out.print( TraditionalBinaryPrefix.long2String((long) sl.getUsedHeapSize().get(Size.Unit.MEGABYTE)
* TraditionalBinaryPrefix.MEGA.value, "B", 1) );
out.write(" \n ");
out.print( TraditionalBinaryPrefix.long2String((long) sl.getMaxHeapSize().get(Size.Unit.MEGABYTE)
* TraditionalBinaryPrefix.MEGA.value, "B", 1) );
out.write(" \n ");
out.print( TraditionalBinaryPrefix.long2String((long) memStoreSizeMB
* TraditionalBinaryPrefix.MEGA.value, "B", 1) );
out.write(" \n \n ");
} else {
out.write("\n \n ");
out.print( server );
out.write(" \n \n \n \n \n ");
}
}
out.write("\n
\n \n \n \n \n ServerName \n Request Per Second \n Read Request Count \n Write Request Count \n \n ");
for (Address server: rsGroupServers) {
ServerName serverName = serverMaping.get(server);
ServerMetrics sl = onlineServers.get(server);
if (sl != null && serverName != null) {
int infoPort = master.getRegionServerInfoPort(serverName);
long readRequestCount = 0;
long writeRequestCount = 0;
for (RegionMetrics rm : sl.getRegionMetrics().values()) {
readRequestCount += rm.getReadRequestCount();
writeRequestCount += rm.getWriteRequestCount();
}
String url = "//" + serverName.getHostname() + ":" + infoPort + "/rs-status";
out.write("\n \n ');
out.print( serverName.getServerName() );
out.write(" \n ");
out.print( sl.getRequestCountPerSecond() );
out.write(" \n ");
out.print( readRequestCount );
out.write(" \n ");
out.print( writeRequestCount );
out.write(" \n \n ");
} else {
out.write("\n \n ");
out.print( server );
out.write(" \n \n \n \n \n ");
}
}
out.write("\n
\n \n \n \n \n ServerName \n Num. Stores \n Num. Storefiles \n Storefile Size Uncompressed \n Storefile Size \n Index Size \n Bloom Size \n \n ");
for (Address server: rsGroupServers) {
ServerName serverName = serverMaping.get(server);
ServerMetrics sl = onlineServers.get(server);
if (sl != null && serverName != null) {
long storeCount = 0;
long storeFileCount = 0;
double storeUncompressedSizeMB = 0;
double storeFileSizeMB = 0;
double totalStaticIndexSizeKB = 0;
double totalStaticBloomSizeKB = 0;
for (RegionMetrics rm : sl.getRegionMetrics().values()) {
storeCount += rm.getStoreCount();
storeFileCount += rm.getStoreFileCount();
storeUncompressedSizeMB += rm.getUncompressedStoreFileSize().get(Size.Unit.MEGABYTE);
storeFileSizeMB += rm.getStoreFileSize().get(Size.Unit.MEGABYTE);
totalStaticIndexSizeKB += rm.getStoreFileUncompressedDataIndexSize().get(Size.Unit.KILOBYTE);
totalStaticBloomSizeKB += rm.getBloomFilterSize().get(Size.Unit.KILOBYTE);
}
int infoPort = master.getRegionServerInfoPort(serverName);
String url = "//" + serverName.getHostname() + ":" + infoPort + "/rs-status";
out.write("\n \n ');
out.print( serverName.getServerName() );
out.write(" \n ");
out.print( storeCount );
out.write(" \n ");
out.print( storeFileCount );
out.write(" \n ");
out.print( TraditionalBinaryPrefix.long2String(
(long) storeUncompressedSizeMB * TraditionalBinaryPrefix.MEGA.value, "B", 1) );
out.write(" \n ");
out.print( TraditionalBinaryPrefix.long2String((long) storeFileSizeMB
* TraditionalBinaryPrefix.MEGA.value, "B", 1) );
out.write(" \n ");
out.print( TraditionalBinaryPrefix.long2String((long) totalStaticIndexSizeKB
* TraditionalBinaryPrefix.KILO.value, "B", 1) );
out.write(" \n ");
out.print( TraditionalBinaryPrefix.long2String((long) totalStaticBloomSizeKB
* TraditionalBinaryPrefix.KILO.value, "B", 1) );
out.write(" \n \n ");
} else {
out.write("\n \n ");
out.print( server );
out.write(" \n \n \n \n \n \n \n \n ");
}
}
out.write("\n
\n \n \n \n \n ServerName \n Num. Compacting KVs \n Num. Compacted KVs \n Remaining KVs \n Compaction Progress \n \n ");
for (Address server: rsGroupServers) {
ServerName serverName = serverMaping.get(server);
ServerMetrics sl = onlineServers.get(server);
if (sl != null && serverName != null) {
long totalCompactingCells = 0;
long currentCompactedCells = 0;
for (RegionMetrics rm : sl.getRegionMetrics().values()) {
totalCompactingCells += rm.getCompactingCellCount();
currentCompactedCells += rm.getCompactedCellCount();
}
String percentDone = "";
if (totalCompactingCells > 0) {
percentDone = String.format("%.2f", 100 *
((float) currentCompactedCells / totalCompactingCells)) + "%";
}
int infoPort = master.getRegionServerInfoPort(serverName);
String url = "//" + serverName.getHostname() + ":" + infoPort + "/rs-status";
out.write("\n \n ');
out.print( serverName.getServerName() );
out.write(" \n ");
out.print( totalCompactingCells );
out.write(" \n ");
out.print( currentCompactedCells );
out.write(" \n ");
out.print( totalCompactingCells - currentCompactedCells );
out.write(" \n ");
out.print( percentDone );
out.write(" \n \n ");
} else {
out.write("\n \n ");
out.print( server );
out.write(" \n \n \n \n \n \n ");
}
}
out.write("\n
\n \n \n ");
} else {
out.write("\n No Region Servers
\n ");
}
out.write("\n \n \n
\n\n \n \n \n Tables
\n \n \n\n ");
if (rsGroupTables != null && rsGroupTables.size() > 0) {
HTableDescriptor[] tables = null;
try (Admin admin = master.getConnection().getAdmin()) {
tables = master.isInitialized() ? admin.listTables((Pattern)null, true) : null;
}
Map tableDescriptors
= Stream.of(tables).collect(Collectors.toMap(TableDescriptor::getTableName, p -> p));
out.write("\n \n \n Namespace \n Table \n Stats \n Online Regions \n Offline Regions \n Failed Regions \n Split Regions \n Other Regions \n Description \n \n ");
for(TableName tableName : rsGroupTables) {
HTableDescriptor htDesc = tableDescriptors.get(tableName);
if(htDesc == null) {
out.write("\n \n ");
out.print( tableName.getNamespaceAsString() );
out.write(" \n ");
out.print( tableName.getQualifierAsString() );
out.write(" \n ");
out.print( "DELETED" );
out.write(" \n \n \n \n \n \n \n \n ");
} else {
out.write("\n \n ");
out.print( tableName.getNamespaceAsString() );
out.write(" \n ');
out.print( tableName.getQualifierAsString() );
out.write(" \n ");
TableState tableState = master.getTableStateManager().getTableState(tableName);
if(tableState.isDisabledOrDisabling()) {
out.write("\n ");
out.print( tableState.getState().name() );
out.write(" \n ");
} else {
out.write("\n ");
out.print( tableState.getState().name() );
out.write(" \n ");
}
out.write("\n ");
Map> tableRegions =
master.getAssignmentManager().getRegionStates().getRegionByStateOfTable(tableName);
int openRegionsCount = tableRegions.get(RegionState.State.OPEN).size();
int offlineRegionsCount = tableRegions.get(RegionState.State.OFFLINE).size();
int splitRegionsCount = tableRegions.get(RegionState.State.SPLIT).size();
int failedRegionsCount = tableRegions.get(RegionState.State.FAILED_OPEN).size()
+ tableRegions.get(RegionState.State.FAILED_CLOSE).size();
int otherRegionsCount = 0;
for (List list: tableRegions.values()) {
otherRegionsCount += list.size();
}
// now subtract known states
otherRegionsCount = otherRegionsCount - openRegionsCount
- failedRegionsCount - offlineRegionsCount
- splitRegionsCount;
out.write("\n ");
out.print( openRegionsCount );
out.write(" \n ");
out.print( offlineRegionsCount );
out.write(" \n ");
out.print( failedRegionsCount );
out.write(" \n ");
out.print( splitRegionsCount );
out.write(" \n ");
out.print( otherRegionsCount );
out.write(" \n ");
out.print( htDesc.toStringCustomizedValues() );
out.write(" \n \n ");
}
}
out.write("\n ");
out.print( rsGroupTables.size() );
out.write(" table(s) in set.
\n
\n ");
} else {
out.write("\n No Tables
\n ");
}
out.write("\n \n");
}
out.write("\n \n");
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "footer.jsp", out, false);
out.write('\n');
} catch (Throwable t) {
if (!(t instanceof SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
out.clearBuffer();
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
else throw new ServletException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}
}