You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2018/03/02 06:35:29 UTC
[20/50] [abbrv] hbase git commit: HBASE-20093 Replace ServerLoad by
ServerMetrics for ServerManager
HBASE-20093 Replace ServerLoad by ServerMetrics for ServerManager
Signed-off-by: tedyu <yu...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/7f6e971c
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/7f6e971c
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/7f6e971c
Branch: refs/heads/HBASE-19064
Commit: 7f6e971c4cc2e3906f959c6304fc05faa7703054
Parents: ba063ab
Author: Chia-Ping Tsai <ch...@gmail.com>
Authored: Tue Feb 27 23:20:06 2018 +0800
Committer: Chia-Ping Tsai <ch...@gmail.com>
Committed: Wed Feb 28 14:57:50 2018 +0800
----------------------------------------------------------------------
.../hbase/coprocessor/TestClassLoading.java | 36 ++-
.../hbase/rsgroup/TestRSGroupsOfflineMode.java | 4 +-
.../hbase/tmpl/master/RSGroupListTmpl.jamon | 83 ++---
.../tmpl/master/RegionServerListTmpl.jamon | 99 ++++--
.../hbase/favored/FavoredNodeLoadBalancer.java | 16 +-
.../hadoop/hbase/master/MasterDumpServlet.java | 10 +-
.../hadoop/hbase/master/MasterRpcServices.java | 12 +-
.../hadoop/hbase/master/ServerManager.java | 47 +--
.../hbase/master/balancer/BaseLoadBalancer.java | 10 +-
.../balancer/FavoredStochasticBalancer.java | 10 +-
.../normalizer/SimpleRegionNormalizer.java | 13 +-
.../resources/hbase-webapps/master/rsgroup.jsp | 89 ++++--
.../resources/hbase-webapps/master/table.jsp | 300 ++++++++-----------
.../normalizer/TestSimpleRegionNormalizer.java | 12 +-
14 files changed, 381 insertions(+), 360 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/7f6e971c/hbase-endpoint/src/test/java/org/apache/hadoop/hbase/coprocessor/TestClassLoading.java
----------------------------------------------------------------------
diff --git a/hbase-endpoint/src/test/java/org/apache/hadoop/hbase/coprocessor/TestClassLoading.java b/hbase-endpoint/src/test/java/org/apache/hadoop/hbase/coprocessor/TestClassLoading.java
index 922977c..bc75881 100644
--- a/hbase-endpoint/src/test/java/org/apache/hadoop/hbase/coprocessor/TestClassLoading.java
+++ b/hbase-endpoint/src/test/java/org/apache/hadoop/hbase/coprocessor/TestClassLoading.java
@@ -22,8 +22,14 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
-import java.io.*;
-import java.util.*;
+import java.io.File;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
@@ -34,8 +40,8 @@ import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.MiniHBaseCluster;
-import org.apache.hadoop.hbase.RegionLoad;
-import org.apache.hadoop.hbase.ServerLoad;
+import org.apache.hadoop.hbase.RegionMetrics;
+import org.apache.hadoop.hbase.ServerMetrics;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
@@ -47,8 +53,10 @@ import org.apache.hadoop.hbase.testclassification.MediumTests;
import org.apache.hadoop.hbase.util.ClassLoaderTestHelper;
import org.apache.hadoop.hbase.util.CoprocessorClassLoader;
import org.apache.hadoop.hdfs.MiniDFSCluster;
-import org.junit.*;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
import org.junit.ClassRule;
+import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -482,13 +490,13 @@ public class TestClassLoading {
* @param tableName : given table.
* @return subset of all servers.
*/
- Map<ServerName, ServerLoad> serversForTable(String tableName) {
- Map<ServerName, ServerLoad> serverLoadHashMap = new HashMap<>();
- for(Map.Entry<ServerName,ServerLoad> server:
+ Map<ServerName, ServerMetrics> serversForTable(String tableName) {
+ Map<ServerName, ServerMetrics> serverLoadHashMap = new HashMap<>();
+ for(Map.Entry<ServerName, ServerMetrics> server:
TEST_UTIL.getMiniHBaseCluster().getMaster().getServerManager().
getOnlineServers().entrySet()) {
- for( Map.Entry<byte[], RegionLoad> region:
- server.getValue().getRegionsLoad().entrySet()) {
+ for(Map.Entry<byte[], RegionMetrics> region:
+ server.getValue().getRegionMetrics().entrySet()) {
if (region.getValue().getNameAsString().equals(tableName)) {
// this server hosts a region of tableName: add this server..
serverLoadHashMap.put(server.getKey(),server.getValue());
@@ -501,8 +509,7 @@ public class TestClassLoading {
}
void assertAllRegionServers(String tableName) throws InterruptedException {
- Map<ServerName, ServerLoad> servers;
- String[] actualCoprocessors = null;
+ Map<ServerName, ServerMetrics> servers;
boolean success = false;
String[] expectedCoprocessors = regionServerSystemCoprocessors;
if (tableName == null) {
@@ -513,8 +520,9 @@ public class TestClassLoading {
}
for (int i = 0; i < 5; i++) {
boolean any_failed = false;
- for(Map.Entry<ServerName,ServerLoad> server: servers.entrySet()) {
- actualCoprocessors = server.getValue().getRsCoprocessors();
+ for(Map.Entry<ServerName, ServerMetrics> server: servers.entrySet()) {
+ String[] actualCoprocessors =
+ server.getValue().getCoprocessorNames().stream().toArray(size -> new String[size]);
if (!Arrays.equals(actualCoprocessors, expectedCoprocessors)) {
LOG.debug("failed comparison: actual: " +
Arrays.toString(actualCoprocessors) +
http://git-wip-us.apache.org/repos/asf/hbase/blob/7f6e971c/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsOfflineMode.java
----------------------------------------------------------------------
diff --git a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsOfflineMode.java b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsOfflineMode.java
index 4685c01..d6df910 100644
--- a/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsOfflineMode.java
+++ b/hbase-rsgroup/src/test/java/org/apache/hadoop/hbase/rsgroup/TestRSGroupsOfflineMode.java
@@ -124,8 +124,8 @@ public class TestRSGroupsOfflineMode {
LOG.info("Waiting for region unassignments on failover RS...");
TEST_UTIL.waitFor(WAIT_TIMEOUT, new Waiter.Predicate<Exception>() {
@Override public boolean evaluate() throws Exception {
- return master.getServerManager().getLoad(failoverRS.getServerName())
- .getRegionsLoad().size() > 0;
+ return !master.getServerManager().getLoad(failoverRS.getServerName())
+ .getRegionMetrics().isEmpty();
}
});
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/7f6e971c/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/RSGroupListTmpl.jamon
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/RSGroupListTmpl.jamon b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/RSGroupListTmpl.jamon
index 9f9831f..9a0e369 100644
--- a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/RSGroupListTmpl.jamon
+++ b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/RSGroupListTmpl.jamon
@@ -30,7 +30,9 @@ ServerManager serverManager;
java.util.Set;
java.util.stream.Collectors;
org.apache.hadoop.hbase.master.HMaster;
- org.apache.hadoop.hbase.ServerLoad;
+ org.apache.hadoop.hbase.RegionMetrics;
+ org.apache.hadoop.hbase.ServerMetrics;
+ org.apache.hadoop.hbase.Size;
org.apache.hadoop.hbase.RSGroupTableAccessor;
org.apache.hadoop.hbase.master.ServerManager;
org.apache.hadoop.hbase.net.Address;
@@ -45,7 +47,7 @@ List<RSGroupInfo> groups = RSGroupTableAccessor.getAllRSGroupInfo(master.getConn
<%java>
RSGroupInfo [] rsGroupInfos = groups.toArray(new RSGroupInfo[groups.size()]);
-Map<Address, ServerLoad> collectServers = Collections.emptyMap();
+Map<Address, ServerMetrics> collectServers = Collections.emptyMap();
if (master.getServerManager() != null) {
collectServers =
master.getServerManager().getOnlineServers().entrySet().stream()
@@ -85,7 +87,7 @@ if (master.getServerManager() != null) {
<%def rsgroup_baseStats>
<%args>
RSGroupInfo [] rsGroupInfos;
- Map<Address, ServerLoad> collectServers;
+ Map<Address, ServerMetrics> collectServers;
</%args>
<table class="table table-striped">
<tr>
@@ -112,13 +114,13 @@ if (master.getServerManager() != null) {
int numRegionsOnline = 0;
Set<Address> servers = rsGroupInfo.getServers();
for (Address server : servers) {
- ServerLoad sl = collectServers.get(server);
+ ServerMetrics sl = collectServers.get(server);
if (sl != null) {
- requestsPerSecond += sl.getNumberOfRequests();
- numRegionsOnline += sl.getNumberOfRegions();
+ requestsPerSecond += sl.getRequestCountPerSecond();
+ numRegionsOnline += sl.getRegionMetrics().size();
//rsgroup total
- totalRegions += sl.getNumberOfRegions();
- totalRequests += sl.getNumberOfRequests();
+ totalRegions += sl.getRegionMetrics().size();
+ totalRequests += sl.getRequestCountPerSecond();
totalOnlineServers++;
onlineServers++;
} else {
@@ -157,7 +159,7 @@ if (master.getServerManager() != null) {
<%def rsgroup_memoryStats>
<%args>
RSGroupInfo [] rsGroupInfos;
- Map<Address, ServerLoad> collectServers;
+ Map<Address, ServerMetrics> collectServers;
</%args>
<table class="table table-striped">
<tr>
@@ -174,11 +176,12 @@ if (master.getServerManager() != null) {
long maxHeap = 0;
long memstoreSize = 0;
for (Address server : rsGroupInfo.getServers()) {
- ServerLoad sl = collectServers.get(server);
+ ServerMetrics sl = collectServers.get(server);
if (sl != null) {
- usedHeap += sl.getUsedHeapMB();
- maxHeap += sl.getMaxHeapMB();
- memstoreSize += sl.getMemstoreSizeInMB();
+ usedHeap += (long) sl.getUsedHeapSize().get(Size.Unit.MEGABYTE);
+ maxHeap += (long) sl.getMaxHeapSize().get(Size.Unit.MEGABYTE);
+ memstoreSize += (long) sl.getRegionMetrics().values().stream().mapToDouble(
+ rm -> rm.getMemStoreSize().get(Size.Unit.MEGABYTE)).sum();
}
}
</%java>
@@ -201,7 +204,7 @@ if (master.getServerManager() != null) {
<%def rsgroup_requestStats>
<%args>
RSGroupInfo [] rsGroupInfos;
- Map<Address, ServerLoad> collectServers;
+ Map<Address, ServerMetrics> collectServers;
</%args>
<table class="table table-striped">
<tr>
@@ -217,11 +220,13 @@ if (master.getServerManager() != null) {
long readRequests = 0;
long writeRequests = 0;
for (Address server : rsGroupInfo.getServers()) {
- ServerLoad sl = collectServers.get(server);
+ ServerMetrics sl = collectServers.get(server);
if (sl != null) {
- requestsPerSecond += sl.getNumberOfRequests();
- readRequests += sl.getReadRequestsCount();
- writeRequests += sl.getWriteRequestsCount();
+ for (RegionMetrics rm : sl.getRegionMetrics().values()) {
+ readRequests += rm.getReadRequestCount();
+ writeRequests += rm.getWriteRequestCount();
+ }
+ requestsPerSecond += sl.getRequestCountPerSecond();
}
}
</%java>
@@ -241,7 +246,7 @@ if (master.getServerManager() != null) {
<%def rsgroup_storeStats>
<%args>
RSGroupInfo [] rsGroupInfos;
- Map<Address, ServerLoad> collectServers;
+ Map<Address, ServerMetrics> collectServers;
</%args>
<table class="table table-striped">
<tr>
@@ -264,14 +269,16 @@ if (master.getServerManager() != null) {
long bloomSize = 0;
int count = 0;
for (Address server : rsGroupInfo.getServers()) {
- ServerLoad sl = collectServers.get(server);
+ ServerMetrics sl = collectServers.get(server);
if (sl != null) {
- numStores += sl.getStores();
- numStorefiles += sl.getStorefiles();
- uncompressedStorefileSize += sl.getStoreUncompressedSizeMB();
- storefileSize += sl.getStorefileSizeInMB();
- indexSize += sl.getTotalStaticIndexSizeKB();
- bloomSize += sl.getTotalStaticBloomSizeKB();
+ for (RegionMetrics rm : sl.getRegionMetrics().values()) {
+ numStores += rm.getStoreCount();
+ numStorefiles += rm.getStoreFileCount();
+ uncompressedStorefileSize += rm.getUncompressedStoreFileSize().get(Size.Unit.MEGABYTE);
+ storefileSize += rm.getStoreFileSize().get(Size.Unit.MEGABYTE);
+ indexSize += rm.getStoreFileUncompressedDataIndexSize().get(Size.Unit.KILOBYTE);
+ bloomSize += rm.getBloomFilterSize().get(Size.Unit.KILOBYTE);
+ }
count++;
}
}
@@ -298,7 +305,7 @@ if (master.getServerManager() != null) {
<%def rsgroup_compactStats>
<%args>
RSGroupInfo [] rsGroupInfos;
- Map<Address, ServerLoad> collectServers;
+ Map<Address, ServerMetrics> collectServers;
</%args>
<table class="table table-striped">
<tr>
@@ -312,28 +319,30 @@ if (master.getServerManager() != null) {
for (RSGroupInfo rsGroupInfo: rsGroupInfos) {
String rsGroupName = rsGroupInfo.getName();
int numStores = 0;
- long totalCompactingKVs = 0;
- long numCompactedKVs = 0;
+ long totalCompactingCells = 0;
+ long totalCompactedCells = 0;
long remainingKVs = 0;
long compactionProgress = 0;
for (Address server : rsGroupInfo.getServers()) {
- ServerLoad sl = collectServers.get(server);
+ ServerMetrics sl = collectServers.get(server);
if (sl != null) {
- totalCompactingKVs += sl.getTotalCompactingKVs();
- numCompactedKVs += sl.getCurrentCompactedKVs();
+ for (RegionMetrics rl : sl.getRegionMetrics().values()) {
+ totalCompactingCells += rl.getCompactingCellCount();
+ totalCompactedCells += rl.getCompactedCellCount();
+ }
}
}
- remainingKVs = totalCompactingKVs - numCompactedKVs;
+ remainingKVs = totalCompactingCells - totalCompactedCells;
String percentDone = "";
- if (totalCompactingKVs > 0) {
+ if (totalCompactingCells > 0) {
percentDone = String.format("%.2f", 100 *
- ((float) numCompactedKVs / totalCompactingKVs)) + "%";
+ ((float) totalCompactedCells / totalCompactingCells)) + "%";
}
</%java>
<tr>
<td><& rsGroupLink; rsGroupName=rsGroupName; &></td>
-<td><% totalCompactingKVs %></td>
-<td><% numCompactedKVs %></td>
+<td><% totalCompactingCells %></td>
+<td><% totalCompactedCells %></td>
<td><% remainingKVs %></td>
<td><% percentDone %></td>
</tr>
http://git-wip-us.apache.org/repos/asf/hbase/blob/7f6e971c/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.jamon
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.jamon b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.jamon
index 0b5599d..fb7dd54 100644
--- a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.jamon
+++ b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.jamon
@@ -26,8 +26,10 @@ HMaster master;
<%import>
java.util.*;
org.apache.hadoop.hbase.master.HMaster;
- org.apache.hadoop.hbase.ServerLoad;
+ org.apache.hadoop.hbase.RegionMetrics;
+ org.apache.hadoop.hbase.ServerMetrics;
org.apache.hadoop.hbase.ServerName;
+ org.apache.hadoop.hbase.Size;
org.apache.hadoop.hbase.util.VersionInfo;
org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;
</%import>
@@ -84,12 +86,12 @@ Arrays.sort(serverNames);
</tr>
<%java>
int totalRegions = 0;
- int totalRequests = 0;
+ int totalRequestsPerSecond = 0;
int inconsistentNodeNum = 0;
String masterVersion = VersionInfo.getVersion();
for (ServerName serverName: serverNames) {
- ServerLoad sl = master.getServerManager().getLoad(serverName);
+ ServerMetrics sl = master.getServerManager().getLoad(serverName);
String version = master.getRegionServerVersion(serverName);
if (!masterVersion.equals(version)) {
inconsistentNodeNum ++;
@@ -100,12 +102,11 @@ Arrays.sort(serverNames);
long lastContact = 0;
if (sl != null) {
- requestsPerSecond = sl.getRequestsPerSecond();
- numRegionsOnline = sl.getNumberOfRegions();
- totalRegions += sl.getNumberOfRegions();
- // Is this correct? Adding a rate to a measure.
- totalRequests += sl.getNumberOfRequests();
- lastContact = (System.currentTimeMillis() - sl.getReportTime())/1000;
+ requestsPerSecond = sl.getRequestCountPerSecond();
+ numRegionsOnline = sl.getRegionMetrics().size();
+ totalRegions += sl.getRegionMetrics().size();
+ totalRequestsPerSecond += sl.getRequestCountPerSecond();
+ lastContact = (System.currentTimeMillis() - sl.getReportTimestamp())/1000;
}
long startcode = serverName.getStartcode();
</%java>
@@ -128,7 +129,7 @@ Arrays.sort(serverNames);
<%else>
<td></td>
</%if>
-<td><% totalRequests %></td>
+<td><% totalRequestsPerSecond %></td>
<td><% totalRegions %></td>
</tr>
</table>
@@ -149,16 +150,20 @@ Arrays.sort(serverNames);
<%java>
for (ServerName serverName: serverNames) {
- ServerLoad sl = master.getServerManager().getLoad(serverName);
+ ServerMetrics sl = master.getServerManager().getLoad(serverName);
if (sl != null) {
+ long memStoreSizeMB = 0;
+ for (RegionMetrics rl : sl.getRegionMetrics().values()) {
+ memStoreSizeMB += rl.getMemStoreSize().get(Size.Unit.MEGABYTE);
+ }
</%java>
<tr>
<td><& serverNameLink; serverName=serverName; serverLoad = sl; &></td>
- <td><% TraditionalBinaryPrefix.long2String(sl.getUsedHeapMB()
+ <td><% TraditionalBinaryPrefix.long2String((long) sl.getUsedHeapSize().get(Size.Unit.MEGABYTE)
* TraditionalBinaryPrefix.MEGA.value, "B", 1) %></td>
- <td><% TraditionalBinaryPrefix.long2String(sl.getMaxHeapMB()
+ <td><% TraditionalBinaryPrefix.long2String((long) sl.getMaxHeapSize().get(Size.Unit.MEGABYTE)
* TraditionalBinaryPrefix.MEGA.value, "B", 1) %></td>
- <td><% TraditionalBinaryPrefix.long2String(sl.getMemStoreSizeMB()
+ <td><% TraditionalBinaryPrefix.long2String(memStoreSizeMB
* TraditionalBinaryPrefix.MEGA.value, "B", 1) %></td>
</tr>
@@ -189,15 +194,23 @@ for (ServerName serverName: serverNames) {
<%java>
for (ServerName serverName: serverNames) {
-ServerLoad sl = master.getServerManager().getLoad(serverName);
+ServerMetrics sl = master.getServerManager().getLoad(serverName);
if (sl != null) {
+ long readRequestCount = 0;
+ long writeRequestCount = 0;
+ long filteredReadRequestCount = 0;
+ for (RegionMetrics rl : sl.getRegionMetrics().values()) {
+ readRequestCount += rl.getReadRequestCount();
+ writeRequestCount += rl.getWriteRequestCount();
+ filteredReadRequestCount += rl.getFilteredReadRequestCount();
+ }
</%java>
<tr>
<td><& serverNameLink; serverName=serverName; serverLoad = sl; &></td>
-<td><% String.format("%.0f", sl.getRequestsPerSecond()) %></td>
-<td><% sl.getReadRequestsCount() %></td>
-<td><% sl.getFilteredReadRequestsCount() %></td>
-<td><% sl.getWriteRequestsCount() %></td>
+<td><% sl.getRequestCountPerSecond() %></td>
+<td><% readRequestCount %></td>
+<td><% filteredReadRequestCount %></td>
+<td><% writeRequestCount %></td>
</tr>
<%java>
} else {
@@ -228,20 +241,34 @@ if (sl != null) {
<%java>
for (ServerName serverName: serverNames) {
-ServerLoad sl = master.getServerManager().getLoad(serverName);
+ServerMetrics sl = master.getServerManager().getLoad(serverName);
if (sl != null) {
+ long storeCount = 0;
+ long storeFileCount = 0;
+ long storeUncompressedSizeMB = 0;
+ long storeFileSizeMB = 0;
+ long totalStaticIndexSizeKB = 0;
+ long totalStaticBloomSizeKB = 0;
+ for (RegionMetrics rl : sl.getRegionMetrics().values()) {
+ storeCount += rl.getStoreCount();
+ storeFileCount += rl.getStoreFileCount();
+ storeUncompressedSizeMB += rl.getUncompressedStoreFileSize().get(Size.Unit.MEGABYTE);
+ storeFileSizeMB += rl.getStoreFileSize().get(Size.Unit.MEGABYTE);
+ totalStaticIndexSizeKB += rl.getStoreFileUncompressedDataIndexSize().get(Size.Unit.KILOBYTE);
+ totalStaticBloomSizeKB += rl.getBloomFilterSize().get(Size.Unit.KILOBYTE);
+ }
</%java>
<tr>
<td><& serverNameLink; serverName=serverName; serverLoad = sl; &></td>
-<td><% sl.getStores() %></td>
-<td><% sl.getStorefiles() %></td>
+<td><% storeCount %></td>
+<td><% storeFileCount %></td>
<td><% TraditionalBinaryPrefix.long2String(
- sl.getStoreUncompressedSizeMB() * TraditionalBinaryPrefix.MEGA.value, "B", 1) %></td>
-<td><% TraditionalBinaryPrefix.long2String(sl.getStorefileSizeMB()
+ storeUncompressedSizeMB * TraditionalBinaryPrefix.MEGA.value, "B", 1) %></td>
+<td><% TraditionalBinaryPrefix.long2String(storeFileSizeMB
* TraditionalBinaryPrefix.MEGA.value, "B", 1) %></td>
-<td><% TraditionalBinaryPrefix.long2String(sl.getTotalStaticIndexSizeKB()
+<td><% TraditionalBinaryPrefix.long2String(totalStaticIndexSizeKB
* TraditionalBinaryPrefix.KILO.value, "B", 1) %></td>
-<td><% TraditionalBinaryPrefix.long2String(sl.getTotalStaticBloomSizeKB()
+<td><% TraditionalBinaryPrefix.long2String(totalStaticBloomSizeKB
* TraditionalBinaryPrefix.KILO.value, "B", 1) %></td>
</tr>
<%java>
@@ -270,19 +297,25 @@ if (sl != null) {
<%java>
for (ServerName serverName: serverNames) {
-ServerLoad sl = master.getServerManager().getLoad(serverName);
+ServerMetrics sl = master.getServerManager().getLoad(serverName);
if (sl != null) {
+long totalCompactingCells = 0;
+long totalCompactedCells = 0;
+for (RegionMetrics rl : sl.getRegionMetrics().values()) {
+ totalCompactingCells += rl.getCompactingCellCount();
+ totalCompactedCells += rl.getCompactedCellCount();
+}
String percentDone = "";
-if (sl.getTotalCompactingKVs() > 0) {
+if (totalCompactingCells > 0) {
percentDone = String.format("%.2f", 100 *
- ((float) sl.getCurrentCompactedKVs() / sl.getTotalCompactingKVs())) + "%";
+ ((float) totalCompactedCells / totalCompactingCells)) + "%";
}
</%java>
<tr>
<td><& serverNameLink; serverName=serverName; serverLoad = sl; &></td>
-<td><% sl.getTotalCompactingKVs() %></td>
-<td><% sl.getCurrentCompactedKVs() %></td>
-<td><% sl.getTotalCompactingKVs() - sl.getCurrentCompactedKVs() %></td>
+<td><% totalCompactingCells %></td>
+<td><% totalCompactedCells %></td>
+<td><% totalCompactingCells - totalCompactedCells %></td>
<td><% percentDone %></td>
</tr>
<%java>
@@ -300,7 +333,7 @@ if (sl.getTotalCompactingKVs() > 0) {
<%def serverNameLink>
<%args>
ServerName serverName;
- ServerLoad serverLoad;
+ ServerMetrics serverLoad;
</%args>
<%java>
int infoPort = master.getRegionServerInfoPort(serverName);
http://git-wip-us.apache.org/repos/asf/hbase/blob/7f6e971c/hbase-server/src/main/java/org/apache/hadoop/hbase/favored/FavoredNodeLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/favored/FavoredNodeLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/favored/FavoredNodeLoadBalancer.java
index 81aa12d..6869390 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/favored/FavoredNodeLoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/favored/FavoredNodeLoadBalancer.java
@@ -28,11 +28,10 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
-
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseIOException;
import org.apache.hadoop.hbase.HBaseInterfaceAudience;
-import org.apache.hadoop.hbase.ServerLoad;
+import org.apache.hadoop.hbase.ServerMetrics;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.RegionInfo;
@@ -46,6 +45,7 @@ import org.apache.hadoop.hbase.util.Pair;
import org.apache.yetus.audience.InterfaceAudience;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
import org.apache.hbase.thirdparty.com.google.common.collect.Maps;
import org.apache.hbase.thirdparty.com.google.common.collect.Sets;
@@ -132,12 +132,12 @@ public class FavoredNodeLoadBalancer extends BaseLoadBalancer implements Favored
}
//the region is currently on none of the favored nodes
//get it on one of them if possible
- ServerLoad l1 = super.services.getServerManager().getLoad(
+ ServerMetrics l1 = super.services.getServerManager().getLoad(
serverNameWithoutCodeToServerName.get(favoredNodes.get(1)));
- ServerLoad l2 = super.services.getServerManager().getLoad(
+ ServerMetrics l2 = super.services.getServerManager().getLoad(
serverNameWithoutCodeToServerName.get(favoredNodes.get(2)));
if (l1 != null && l2 != null) {
- if (l1.getLoad() > l2.getLoad()) {
+ if (l1.getRegionMetrics().size() > l2.getRegionMetrics().size()) {
destination = serverNameWithoutCodeToServerName.get(favoredNodes.get(2));
} else {
destination = serverNameWithoutCodeToServerName.get(favoredNodes.get(1));
@@ -296,9 +296,9 @@ public class FavoredNodeLoadBalancer extends BaseLoadBalancer implements Favored
// assign the region to the one with a lower load
// (both have the desired hdfs blocks)
ServerName s;
- ServerLoad tertiaryLoad = super.services.getServerManager().getLoad(tertiaryHost);
- ServerLoad secondaryLoad = super.services.getServerManager().getLoad(secondaryHost);
- if (secondaryLoad.getLoad() < tertiaryLoad.getLoad()) {
+ ServerMetrics tertiaryLoad = super.services.getServerManager().getLoad(tertiaryHost);
+ ServerMetrics secondaryLoad = super.services.getServerManager().getLoad(secondaryHost);
+ if (secondaryLoad.getRegionMetrics().size() < tertiaryLoad.getRegionMetrics().size()) {
s = secondaryHost;
} else {
s = tertiaryHost;
http://git-wip-us.apache.org/repos/asf/hbase/blob/7f6e971c/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterDumpServlet.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterDumpServlet.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterDumpServlet.java
index 262c59e..0dd50ff 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterDumpServlet.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterDumpServlet.java
@@ -24,13 +24,10 @@ import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Date;
import java.util.Map;
-
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-
-import org.apache.yetus.audience.InterfaceAudience;
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.ServerLoad;
+import org.apache.hadoop.hbase.ServerMetrics;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.master.assignment.AssignmentManager;
import org.apache.hadoop.hbase.master.assignment.RegionStates.RegionStateNode;
@@ -39,6 +36,7 @@ import org.apache.hadoop.hbase.monitoring.StateDumpServlet;
import org.apache.hadoop.hbase.monitoring.TaskMonitor;
import org.apache.hadoop.hbase.regionserver.RSDumpServlet;
import org.apache.hadoop.hbase.util.Threads;
+import org.apache.yetus.audience.InterfaceAudience;
@InterfaceAudience.Private
public class MasterDumpServlet extends StateDumpServlet {
@@ -132,8 +130,8 @@ public class MasterDumpServlet extends StateDumpServlet {
return;
}
- Map<ServerName, ServerLoad> servers = sm.getOnlineServers();
- for (Map.Entry<ServerName, ServerLoad> e : servers.entrySet()) {
+ Map<ServerName, ServerMetrics> servers = sm.getOnlineServers();
+ for (Map.Entry<ServerName, ServerMetrics> e : servers.entrySet()) {
out.println(e.getKey() + ": " + e.getValue());
}
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/7f6e971c/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java
index b4f0faf..8f92041 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java
@@ -37,7 +37,8 @@ import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.Server;
-import org.apache.hadoop.hbase.ServerLoad;
+import org.apache.hadoop.hbase.ServerMetrics;
+import org.apache.hadoop.hbase.ServerMetricsBuilder;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.UnknownRegionException;
@@ -102,6 +103,7 @@ import org.slf4j.LoggerFactory;
import org.apache.hbase.thirdparty.com.google.protobuf.RpcController;
import org.apache.hbase.thirdparty.com.google.protobuf.ServiceException;
import org.apache.hbase.thirdparty.com.google.protobuf.UnsafeByteOperations;
+
import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
import org.apache.hadoop.hbase.shaded.protobuf.ResponseConverter;
import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionRequest;
@@ -451,16 +453,16 @@ public class MasterRpcServices extends RSRpcServices
master.checkServiceStarted();
ClusterStatusProtos.ServerLoad sl = request.getLoad();
ServerName serverName = ProtobufUtil.toServerName(request.getServer());
- ServerLoad oldLoad = master.getServerManager().getLoad(serverName);
- ServerLoad newLoad = new ServerLoad(serverName, sl);
+ ServerMetrics oldLoad = master.getServerManager().getLoad(serverName);
+ ServerMetrics newLoad = ServerMetricsBuilder.toServerMetrics(serverName, sl);
master.getServerManager().regionServerReport(serverName, newLoad);
int version = VersionInfoUtil.getCurrentClientVersionNumber();
master.getAssignmentManager().reportOnlineRegions(serverName,
- version, newLoad.getRegionsLoad().keySet());
+ version, newLoad.getRegionMetrics().keySet());
if (sl != null && master.metricsMaster != null) {
// Up our metrics.
master.metricsMaster.incrementRequests(sl.getTotalNumberOfRequests()
- - (oldLoad != null ? oldLoad.getTotalNumberOfRequests() : 0));
+ - (oldLoad != null ? oldLoad.getRequestCount() : 0));
}
} catch (IOException ioe) {
throw new ServiceException(ioe);
http://git-wip-us.apache.org/repos/asf/hbase/blob/7f6e971c/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
index dbcce1d..06d6c8b 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
@@ -37,13 +37,12 @@ import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Predicate;
-
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.ClockOutOfSyncException;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.NotServingRegionException;
-import org.apache.hadoop.hbase.RegionLoad;
-import org.apache.hadoop.hbase.ServerLoad;
+import org.apache.hadoop.hbase.RegionMetrics;
+import org.apache.hadoop.hbase.ServerMetrics;
import org.apache.hadoop.hbase.ServerMetricsBuilder;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.YouAreDeadException;
@@ -62,8 +61,10 @@ import org.apache.yetus.audience.InterfaceAudience;
import org.apache.zookeeper.KeeperException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;
import org.apache.hbase.thirdparty.com.google.protobuf.UnsafeByteOperations;
+
import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService;
import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos.RegionStoreSequenceIds;
@@ -124,7 +125,8 @@ public class ServerManager {
storeFlushedSequenceIdsByRegion = new ConcurrentSkipListMap<>(Bytes.BYTES_COMPARATOR);
/** Map of registered servers to their current load */
- private final ConcurrentNavigableMap<ServerName, ServerLoad> onlineServers = new ConcurrentSkipListMap<>();
+ private final ConcurrentNavigableMap<ServerName, ServerMetrics> onlineServers =
+ new ConcurrentSkipListMap<>();
/**
* Map of admin interfaces per registered regionserver; these interfaces we use to control
@@ -240,7 +242,7 @@ public class ServerManager {
request.getServerStartCode());
checkClockSkew(sn, request.getServerCurrentTime());
checkIsDead(sn, "STARTUP");
- if (!checkAndRecordNewServer(sn, new ServerLoad(ServerMetricsBuilder.of(sn)))) {
+ if (!checkAndRecordNewServer(sn, ServerMetricsBuilder.of(sn))) {
LOG.warn("THIS SHOULD NOT HAPPEN, RegionServerStartup"
+ " could not record the server: " + sn);
}
@@ -252,12 +254,11 @@ public class ServerManager {
* @param sn
* @param hsl
*/
- private void updateLastFlushedSequenceIds(ServerName sn, ServerLoad hsl) {
- Map<byte[], RegionLoad> regionsLoad = hsl.getRegionsLoad();
- for (Entry<byte[], RegionLoad> entry : regionsLoad.entrySet()) {
+ private void updateLastFlushedSequenceIds(ServerName sn, ServerMetrics hsl) {
+ for (Entry<byte[], RegionMetrics> entry : hsl.getRegionMetrics().entrySet()) {
byte[] encodedRegionName = Bytes.toBytes(RegionInfo.encodeRegionName(entry.getKey()));
Long existingValue = flushedSequenceIdByRegion.get(encodedRegionName);
- long l = entry.getValue().getCompleteSequenceId();
+ long l = entry.getValue().getCompletedSequenceId();
// Don't let smaller sequence ids override greater sequence ids.
if (LOG.isTraceEnabled()) {
LOG.trace(Bytes.toString(encodedRegionName) + ", existingValue=" + existingValue +
@@ -273,10 +274,10 @@ public class ServerManager {
ConcurrentNavigableMap<byte[], Long> storeFlushedSequenceId =
computeIfAbsent(storeFlushedSequenceIdsByRegion, encodedRegionName,
() -> new ConcurrentSkipListMap<>(Bytes.BYTES_COMPARATOR));
- for (StoreSequenceId storeSeqId : entry.getValue().getStoreCompleteSequenceId()) {
- byte[] family = storeSeqId.getFamilyName().toByteArray();
+ for (Entry<byte[], Long> storeSeqId : entry.getValue().getStoreSequenceId().entrySet()) {
+ byte[] family = storeSeqId.getKey();
existingValue = storeFlushedSequenceId.get(family);
- l = storeSeqId.getSequenceId();
+ l = storeSeqId.getValue();
if (LOG.isTraceEnabled()) {
LOG.trace(Bytes.toString(encodedRegionName) + ", family=" + Bytes.toString(family) +
", existingValue=" + existingValue + ", completeSequenceId=" + l);
@@ -291,7 +292,7 @@ public class ServerManager {
@VisibleForTesting
public void regionServerReport(ServerName sn,
- ServerLoad sl) throws YouAreDeadException {
+ ServerMetrics sl) throws YouAreDeadException {
checkIsDead(sn, "REPORT");
if (null == this.onlineServers.replace(sn, sl)) {
// Already have this host+port combo and its just different start code?
@@ -316,7 +317,7 @@ public class ServerManager {
* @param sl the server load on the server
* @return true if the server is recorded, otherwise, false
*/
- boolean checkAndRecordNewServer(final ServerName serverName, final ServerLoad sl) {
+ boolean checkAndRecordNewServer(final ServerName serverName, final ServerMetrics sl) {
ServerName existingServer = null;
synchronized (this.onlineServers) {
existingServer = findServerWithSameHostnamePortWithLock(serverName);
@@ -423,7 +424,7 @@ public class ServerManager {
* @param serverName The remote servers name.
*/
@VisibleForTesting
- void recordNewServerWithLock(final ServerName serverName, final ServerLoad sl) {
+ void recordNewServerWithLock(final ServerName serverName, final ServerMetrics sl) {
LOG.info("Registering regionserver=" + serverName);
this.onlineServers.put(serverName, sl);
this.rsAdmins.remove(serverName);
@@ -447,9 +448,9 @@ public class ServerManager {
/**
* @param serverName
- * @return ServerLoad if serverName is known else null
+ * @return ServerMetrics if serverName is known else null
*/
- public ServerLoad getLoad(final ServerName serverName) {
+ public ServerMetrics getLoad(final ServerName serverName) {
return this.onlineServers.get(serverName);
}
@@ -462,9 +463,9 @@ public class ServerManager {
public double getAverageLoad() {
int totalLoad = 0;
int numServers = 0;
- for (ServerLoad sl: this.onlineServers.values()) {
- numServers++;
- totalLoad += sl.getNumberOfRegions();
+ for (ServerMetrics sl : this.onlineServers.values()) {
+ numServers++;
+ totalLoad += sl.getRegionMetrics().size();
}
return numServers == 0 ? 0 :
(double)totalLoad / (double)numServers;
@@ -479,7 +480,7 @@ public class ServerManager {
/**
* @return Read-only map of servers to serverinfo
*/
- public Map<ServerName, ServerLoad> getOnlineServers() {
+ public Map<ServerName, ServerMetrics> getOnlineServers() {
// Presumption is that iterating the returned Map is OK.
synchronized (this.onlineServers) {
return Collections.unmodifiableMap(this.onlineServers);
@@ -907,11 +908,11 @@ public class ServerManager {
* @return A copy of the internal list of online servers matched by the predicator
*/
public List<ServerName> getOnlineServersListWithPredicator(List<ServerName> keys,
- Predicate<ServerLoad> idleServerPredicator) {
+ Predicate<ServerMetrics> idleServerPredicator) {
List<ServerName> names = new ArrayList<>();
if (keys != null && idleServerPredicator != null) {
keys.forEach(name -> {
- ServerLoad load = onlineServers.get(name);
+ ServerMetrics load = onlineServers.get(name);
if (load != null) {
if (idleServerPredicator.test(load)) {
names.add(name);
http://git-wip-us.apache.org/repos/asf/hbase/blob/7f6e971c/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
index a8dd9ae..36f57f2 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
@@ -1,4 +1,5 @@
- /*
+/**
+ *
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -33,7 +34,6 @@ import java.util.Set;
import java.util.TreeMap;
import java.util.function.Predicate;
import java.util.stream.Collectors;
-
import org.apache.commons.lang3.NotImplementedException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.ClusterMetrics;
@@ -41,7 +41,7 @@ import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HBaseIOException;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HDFSBlocksDistribution;
-import org.apache.hadoop.hbase.ServerLoad;
+import org.apache.hadoop.hbase.ServerMetrics;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.RegionInfo;
@@ -73,8 +73,8 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
private static final List<RegionInfo> EMPTY_REGION_LIST = new ArrayList<>(0);
- static final Predicate<ServerLoad> IDLE_SERVER_PREDICATOR
- = load -> load.getNumberOfRegions() == 0;
+ static final Predicate<ServerMetrics> IDLE_SERVER_PREDICATOR
+ = load -> load.getRegionMetrics().isEmpty();
protected RegionLocationFinder regionFinder;
protected boolean useRegionFinder;
http://git-wip-us.apache.org/repos/asf/hbase/blob/7f6e971c/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/FavoredStochasticBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/FavoredStochasticBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/FavoredStochasticBalancer.java
index a72478c..b652610 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/FavoredStochasticBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/FavoredStochasticBalancer.java
@@ -31,9 +31,8 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-
import org.apache.hadoop.hbase.HBaseIOException;
-import org.apache.hadoop.hbase.ServerLoad;
+import org.apache.hadoop.hbase.ServerMetrics;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.client.RegionInfo;
import org.apache.hadoop.hbase.favored.FavoredNodeAssignmentHelper;
@@ -47,6 +46,7 @@ import org.apache.hadoop.hbase.master.RegionPlan;
import org.apache.hadoop.hbase.util.Pair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
import org.apache.hbase.thirdparty.com.google.common.collect.Lists;
import org.apache.hbase.thirdparty.com.google.common.collect.Maps;
import org.apache.hbase.thirdparty.com.google.common.collect.Sets;
@@ -274,10 +274,10 @@ public class FavoredStochasticBalancer extends StochasticLoadBalancer implements
// Assign the region to the one with a lower load (both have the desired hdfs blocks)
ServerName s;
- ServerLoad tertiaryLoad = super.services.getServerManager().getLoad(tertiaryHost);
- ServerLoad secondaryLoad = super.services.getServerManager().getLoad(secondaryHost);
+ ServerMetrics tertiaryLoad = super.services.getServerManager().getLoad(tertiaryHost);
+ ServerMetrics secondaryLoad = super.services.getServerManager().getLoad(secondaryHost);
if (secondaryLoad != null && tertiaryLoad != null) {
- if (secondaryLoad.getLoad() < tertiaryLoad.getLoad()) {
+ if (secondaryLoad.getRegionMetrics().size() < tertiaryLoad.getRegionMetrics().size()) {
s = secondaryHost;
} else {
s = tertiaryHost;
http://git-wip-us.apache.org/repos/asf/hbase/blob/7f6e971c/hbase-server/src/main/java/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.java
index 4c3167f..7e1dd4d 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.java
@@ -22,10 +22,10 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
-
import org.apache.hadoop.hbase.HBaseIOException;
-import org.apache.hadoop.hbase.RegionLoad;
+import org.apache.hadoop.hbase.RegionMetrics;
import org.apache.hadoop.hbase.ServerName;
+import org.apache.hadoop.hbase.Size;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.MasterSwitchType;
import org.apache.hadoop.hbase.client.RegionInfo;
@@ -35,6 +35,7 @@ import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;
import org.apache.yetus.audience.InterfaceAudience;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
import org.apache.hadoop.hbase.shaded.protobuf.RequestConverter;
/**
@@ -44,7 +45,7 @@ import org.apache.hadoop.hbase.shaded.protobuf.RequestConverter;
*
* <ol>
* <li> Get all regions of a given table
- * <li> Get avg size S of each region (by total size of store files reported in RegionLoad)
+ * <li> Get avg size S of each region (by total size of store files reported in RegionMetrics)
* <li> Seek every single region one by one. If a region R0 is bigger than S * 2, it is
* kindly requested to split. Thereon evaluate the next region R1
* <li> Otherwise, if R0 + R1 is smaller than S, R0 and R1 are kindly requested to merge.
@@ -204,12 +205,12 @@ public class SimpleRegionNormalizer implements RegionNormalizer {
private long getRegionSize(RegionInfo hri) {
ServerName sn = masterServices.getAssignmentManager().getRegionStates().
getRegionServerOfRegion(hri);
- RegionLoad regionLoad = masterServices.getServerManager().getLoad(sn).
- getRegionsLoad().get(hri.getRegionName());
+ RegionMetrics regionLoad = masterServices.getServerManager().getLoad(sn).
+ getRegionMetrics().get(hri.getRegionName());
if (regionLoad == null) {
LOG.debug(hri.getRegionNameAsString() + " was not found in RegionsLoad");
return -1;
}
- return regionLoad.getStorefileSizeMB();
+ return (long) regionLoad.getStoreFileSize().get(Size.Unit.MEGABYTE);
}
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/7f6e971c/hbase-server/src/main/resources/hbase-webapps/master/rsgroup.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/rsgroup.jsp b/hbase-server/src/main/resources/hbase-webapps/master/rsgroup.jsp
index 9f95b76..7b7e227 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/rsgroup.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/rsgroup.jsp
@@ -28,7 +28,6 @@
import="java.util.stream.Collectors"
import="org.apache.hadoop.hbase.HTableDescriptor"
import="org.apache.hadoop.hbase.RSGroupTableAccessor"
- import="org.apache.hadoop.hbase.ServerLoad"
import="org.apache.hadoop.hbase.ServerName"
import="org.apache.hadoop.hbase.TableName"
import="org.apache.hadoop.hbase.client.Admin"
@@ -42,6 +41,9 @@
import="org.apache.hadoop.hbase.util.Bytes"
import="org.apache.hadoop.hbase.util.VersionInfo"
import="org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix"%>
+<%@ page import="org.apache.hadoop.hbase.ServerMetrics" %>
+<%@ page import="org.apache.hadoop.hbase.Size" %>
+<%@ page import="org.apache.hadoop.hbase.RegionMetrics" %>
<%
HMaster master = (HMaster)getServletContext().getAttribute(HMaster.MASTER);
String rsGroupName = request.getParameter("name");
@@ -67,7 +69,7 @@
return 0;
});
- Map<Address, ServerLoad> onlineServers = Collections.emptyMap();
+ Map<Address, ServerMetrics> onlineServers = Collections.emptyMap();
Map<Address, ServerName> serverMaping = Collections.emptyMap();
if (master.getServerManager() != null) {
onlineServers = master.getServerManager().getOnlineServers().entrySet().stream()
@@ -141,7 +143,7 @@
for (Address server: rsGroupServers) {
ServerName serverName = serverMaping.get(server);
if (serverName != null) {
- ServerLoad sl = onlineServers.get(server);
+ ServerMetrics sl = onlineServers.get(server);
String version = master.getRegionServerVersion(serverName);
if (!masterVersion.equals(version)) {
inconsistentNodeNum ++;
@@ -150,11 +152,11 @@
int numRegionsOnline = 0;
long lastContact = 0;
if (sl != null) {
- requestsPerSecond = sl.getRequestsPerSecond();
- numRegionsOnline = sl.getNumberOfRegions();
- totalRegions += sl.getNumberOfRegions();
- totalRequests += sl.getNumberOfRequests();
- lastContact = (System.currentTimeMillis() - sl.getReportTime())/1000;
+ 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);
@@ -201,18 +203,21 @@
</tr>
<% for (Address server: rsGroupServers) {
ServerName serverName = serverMaping.get(server);
- ServerLoad sl = onlineServers.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";
%>
<tr>
<td><a href="<%= url %>"><%= serverName.getServerName() %></a></td>
- <td><%= TraditionalBinaryPrefix.long2String(sl.getUsedHeapMB()
+ <td><%= TraditionalBinaryPrefix.long2String((long) sl.getUsedHeapSize().get(Size.Unit.MEGABYTE)
* TraditionalBinaryPrefix.MEGA.value, "B", 1) %></td>
- <td><%= TraditionalBinaryPrefix.long2String(sl.getMaxHeapMB()
+ <td><%= TraditionalBinaryPrefix.long2String((long) sl.getMaxHeapSize().get(Size.Unit.MEGABYTE)
* TraditionalBinaryPrefix.MEGA.value, "B", 1) %></td>
- <td><%= TraditionalBinaryPrefix.long2String(sl.getMemstoreSizeInMB()
+ <td><%= TraditionalBinaryPrefix.long2String((long) memStoreSizeMB
* TraditionalBinaryPrefix.MEGA.value, "B", 1) %></td>
</tr>
<% } else { %>
@@ -236,16 +241,22 @@
</tr>
<% for (Address server: rsGroupServers) {
ServerName serverName = serverMaping.get(server);
- ServerLoad sl = onlineServers.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";
%>
<tr>
<td><a href="<%= url %>"><%= serverName.getServerName() %></a></td>
- <td><%= String.format("%.0f", sl.getRequestsPerSecond()) %></td>
- <td><%= sl.getReadRequestsCount() %></td>
- <td><%= sl.getWriteRequestsCount() %></td>
+ <td><%= String.format("%.0f", sl.getRequestCountPerSecond()) %></td>
+ <td><%= readRequestCount %></td>
+ <td><%= writeRequestCount %></td>
</tr>
<% } else { %>
<tr>
@@ -271,22 +282,36 @@
</tr>
<% for (Address server: rsGroupServers) {
ServerName serverName = serverMaping.get(server);
- ServerLoad sl = onlineServers.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";
%>
<tr>
<td><a href="<%= url %>"><%= serverName.getServerName() %></a></td>
- <td><%= sl.getStores() %></td>
- <td><%= sl.getStorefiles() %></td>
+ <td><%= storeCount %></td>
+ <td><%= storeFileCount %></td>
<td><%= TraditionalBinaryPrefix.long2String(
- sl.getStoreUncompressedSizeMB() * TraditionalBinaryPrefix.MEGA.value, "B", 1) %></td>
- <td><%= TraditionalBinaryPrefix.long2String(sl.getStorefileSizeInMB()
+ (long) storeUncompressedSizeMB * TraditionalBinaryPrefix.MEGA.value, "B", 1) %></td>
+ <td><%= TraditionalBinaryPrefix.long2String((long) storeFileSizeMB
* TraditionalBinaryPrefix.MEGA.value, "B", 1) %></td>
- <td><%= TraditionalBinaryPrefix.long2String(sl.getTotalStaticIndexSizeKB()
+ <td><%= TraditionalBinaryPrefix.long2String((long) totalStaticIndexSizeKB
* TraditionalBinaryPrefix.KILO.value, "B", 1) %></td>
- <td><%= TraditionalBinaryPrefix.long2String(sl.getTotalStaticBloomSizeKB()
+ <td><%= TraditionalBinaryPrefix.long2String((long) totalStaticBloomSizeKB
* TraditionalBinaryPrefix.KILO.value, "B", 1) %></td>
</tr>
<% } else { %>
@@ -314,21 +339,27 @@
</tr>
<% for (Address server: rsGroupServers) {
ServerName serverName = serverMaping.get(server);
- ServerLoad sl = onlineServers.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 (sl.getTotalCompactingKVs() > 0) {
+ if (totalCompactingCells > 0) {
percentDone = String.format("%.2f", 100 *
- ((float) sl.getCurrentCompactedKVs() / sl.getTotalCompactingKVs())) + "%";
+ ((float) currentCompactedCells / totalCompactingCells)) + "%";
}
int infoPort = master.getRegionServerInfoPort(serverName);
String url = "//" + serverName.getHostname() + ":" + infoPort + "/rs-status";
%>
<tr>
<td><a href="<%= url %>"><%= serverName.getServerName() %></a></td>
- <td><%= sl.getTotalCompactingKVs() %></td>
- <td><%= sl.getCurrentCompactedKVs() %></td>
- <td><%= sl.getTotalCompactingKVs() - sl.getCurrentCompactedKVs() %></td>
+ <td><%= totalCompactingCells %></td>
+ <td><%= currentCompactedCells %></td>
+ <td><%= totalCompactingCells - currentCompactedCells %></td>
<td><%= percentDone %></td>
</tr>
<% } else { %>
http://git-wip-us.apache.org/repos/asf/hbase/blob/7f6e971c/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/resources/hbase-webapps/master/table.jsp b/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
index 9252552..e52f33a 100644
--- a/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
+++ b/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
@@ -34,8 +34,6 @@
import="org.apache.hadoop.hbase.HColumnDescriptor"
import="org.apache.hadoop.hbase.HConstants"
import="org.apache.hadoop.hbase.HRegionLocation"
- import="org.apache.hadoop.hbase.RegionLoad"
- import="org.apache.hadoop.hbase.ServerLoad"
import="org.apache.hadoop.hbase.ServerName"
import="org.apache.hadoop.hbase.TableName"
import="org.apache.hadoop.hbase.TableNotFoundException"
@@ -60,16 +58,20 @@
<%@ page import="org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos" %>
<%@ page import="org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas" %>
<%@ page import="org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceQuota" %>
+<%@ page import="org.apache.hadoop.hbase.ServerMetrics" %>
+<%@ page import="org.apache.hadoop.hbase.RegionMetrics" %>
+<%@ page import="org.apache.hadoop.hbase.Size" %>
+<%@ page import="org.apache.hadoop.hbase.RegionMetricsBuilder" %>
<%!
/**
* @return An empty region load stamped with the passed in <code>regionInfo</code>
* region name.
*/
- private RegionLoad getEmptyRegionLoad(final RegionInfo regionInfo) {
- return new RegionLoad(ClusterStatusProtos.RegionLoad.newBuilder().
- setRegionSpecifier(HBaseProtos.RegionSpecifier.newBuilder().
- setType(HBaseProtos.RegionSpecifier.RegionSpecifierType.REGION_NAME).
- setValue(ByteString.copyFrom(regionInfo.getRegionName())).build()).build());
+ private RegionMetrics getEmptyRegionMetrics(final RegionInfo regionInfo) {
+ return RegionMetricsBuilder.toRegionMetrics(ClusterStatusProtos.RegionLoad.newBuilder().
+ setRegionSpecifier(HBaseProtos.RegionSpecifier.newBuilder().
+ setType(HBaseProtos.RegionSpecifier.RegionSpecifierType.REGION_NAME).
+ setValue(ByteString.copyFrom(regionInfo.getRegionName())).build()).build());
}
%>
<%
@@ -87,7 +89,6 @@
Table table;
String tableHeader;
boolean withReplica = false;
- ServerName rl = metaTableLocator.getMetaRegionLocation(master.getZooKeeper());
boolean showFragmentation = conf.getBoolean("hbase.master.ui.fragmentation.enabled", false);
boolean readOnly = conf.getBoolean("hbase.master.ui.readonly", false);
int numMetaReplicas = conf.getInt(HConstants.META_REPLICAS_NUM,
@@ -216,18 +217,18 @@ if ( fqtn != null ) {
float locality = 0.0f;
if (metaLocation != null) {
- ServerLoad sl = master.getServerManager().getLoad(metaLocation);
+ ServerMetrics sl = master.getServerManager().getLoad(metaLocation);
// The host name portion should be safe, but I don't know how we handle IDNs so err on the side of failing safely.
hostAndPort = URLEncoder.encode(metaLocation.getHostname()) + ":" + master.getRegionServerInfoPort(metaLocation);
if (sl != null) {
- Map<byte[], RegionLoad> map = sl.getRegionsLoad();
+ Map<byte[], RegionMetrics> map = sl.getRegionMetrics();
if (map.containsKey(meta.getRegionName())) {
- RegionLoad load = map.get(meta.getRegionName());
- readReq = String.format("%,1d", load.getReadRequestsCount());
- writeReq = String.format("%,1d", load.getWriteRequestsCount());
- fileSize = StringUtils.byteDesc(load.getStorefileSizeMB()*1024l*1024);
- fileCount = String.format("%,1d", load.getStorefiles());
- memSize = StringUtils.byteDesc(load.getMemStoreSizeMB()*1024l*1024);
+ RegionMetrics load = map.get(meta.getRegionName());
+ readReq = String.format("%,1d", load.getReadRequestCount());
+ writeReq = String.format("%,1d", load.getWriteRequestCount());
+ fileSize = StringUtils.byteDesc((long) load.getStoreFileSize().get(Size.Unit.BYTE));
+ fileCount = String.format("%,1d", load.getStoreFileCount());
+ memSize = StringUtils.byteDesc((long) load.getMemStoreSize().get(Size.Unit.BYTE));
locality = load.getDataLocality();
}
}
@@ -400,7 +401,7 @@ if ( fqtn != null ) {
Map<ServerName, Integer> regDistribution = new TreeMap<>();
Map<ServerName, Integer> primaryRegDistribution = new TreeMap<>();
List<HRegionLocation> regions = r.getAllRegionLocations();
- Map<RegionInfo, RegionLoad> regionsToLoad = new LinkedHashMap<>();
+ Map<RegionInfo, RegionMetrics> regionsToLoad = new LinkedHashMap<>();
Map<RegionInfo, ServerName> regionsToServer = new LinkedHashMap<>();
for (HRegionLocation hriEntry : regions) {
RegionInfo regionInfo = hriEntry.getRegionInfo();
@@ -408,28 +409,27 @@ if ( fqtn != null ) {
regionsToServer.put(regionInfo, addr);
if (addr != null) {
- ServerLoad sl = master.getServerManager().getLoad(addr);
+ ServerMetrics sl = master.getServerManager().getLoad(addr);
if (sl != null) {
- Map<byte[], RegionLoad> map = sl.getRegionsLoad();
- RegionLoad regionload = map.get(regionInfo.getRegionName());
- regionsToLoad.put(regionInfo, regionload);
- if(regionload != null) {
- totalReadReq += regionload.getReadRequestsCount();
- totalWriteReq += regionload.getWriteRequestsCount();
- totalSize += regionload.getStorefileSizeMB();
- totalStoreFileCount += regionload.getStorefiles();
- totalMemSize += regionload.getMemStoreSizeMB();
- totalStoreFileSizeMB += regionload.getStorefileSizeMB();
+ RegionMetrics regionMetrics = sl.getRegionMetrics().get(regionInfo.getRegionName());
+ regionsToLoad.put(regionInfo, regionMetrics);
+ if(regionMetrics != null) {
+ totalReadReq += regionMetrics.getReadRequestCount();
+ totalWriteReq += regionMetrics.getWriteRequestCount();
+ totalSize += regionMetrics.getStoreFileSize().get(Size.Unit.MEGABYTE);
+ totalStoreFileCount += regionMetrics.getStoreFileCount();
+ totalMemSize += regionMetrics.getMemStoreSize().get(Size.Unit.MEGABYTE);
+ totalStoreFileSizeMB += regionMetrics.getStoreFileSize().get(Size.Unit.MEGABYTE);
} else {
- RegionLoad load0 = getEmptyRegionLoad(regionInfo);
+ RegionMetrics load0 = getEmptyRegionMetrics(regionInfo);
regionsToLoad.put(regionInfo, load0);
}
} else{
- RegionLoad load0 = getEmptyRegionLoad(regionInfo);
+ RegionMetrics load0 = getEmptyRegionMetrics(regionInfo);
regionsToLoad.put(regionInfo, load0);
}
} else {
- RegionLoad load0 = getEmptyRegionLoad(regionInfo);
+ RegionMetrics load0 = getEmptyRegionMetrics(regionInfo);
regionsToLoad.put(regionInfo, load0);
}
}
@@ -474,156 +474,92 @@ ShowDetailName&Start/End Key<input type="checkbox" id="showWhole" style="margin-
</tr>
<%
- List<Map.Entry<RegionInfo, RegionLoad>> entryList = new ArrayList<>(regionsToLoad.entrySet());
+ List<Map.Entry<RegionInfo, RegionMetrics>> entryList = new ArrayList<>(regionsToLoad.entrySet());
if(sortKey != null) {
if (sortKey.equals("readrequest")) {
- Collections.sort(entryList,
- new Comparator<Map.Entry<RegionInfo, RegionLoad>>() {
- public int compare(
- Map.Entry<RegionInfo, RegionLoad> entry1,
- Map.Entry<RegionInfo, RegionLoad> entry2) {
- if (entry1 == null || entry1.getValue() == null) {
- return -1;
- } else if (entry2 == null || entry2.getValue() == null) {
- return 1;
- }
- int result = 0;
- if (entry1.getValue().getReadRequestsCount() < entry2.getValue().getReadRequestsCount()) {
- result = -1;
- } else if (entry1.getValue().getReadRequestsCount() > entry2.getValue().getReadRequestsCount()) {
- result = 1;
- }
- if (reverseOrder) {
- result = -1 * result;
- }
- return result;
- }
- });
+ Collections.sort(entryList, (entry1, entry2) -> {
+ if (entry1 == null || entry1.getValue() == null) {
+ return -1;
+ } else if (entry2 == null || entry2.getValue() == null) {
+ return 1;
+ }
+ int result = Long.compare(entry1.getValue().getReadRequestCount(),
+ entry2.getValue().getReadRequestCount());
+ if (reverseOrder) {
+ result = -1 * result;
+ }
+ return result;
+ });
} else if (sortKey.equals("writerequest")) {
- Collections.sort(entryList,
- new Comparator<Map.Entry<RegionInfo, RegionLoad>>() {
- public int compare(
- Map.Entry<RegionInfo, RegionLoad> entry1,
- Map.Entry<RegionInfo, RegionLoad> entry2) {
- if (entry1 == null || entry1.getValue() == null) {
- return -1;
- } else if (entry2 == null || entry2.getValue() == null) {
- return 1;
- }
- int result = 0;
- if (entry1.getValue().getWriteRequestsCount() < entry2.getValue()
- .getWriteRequestsCount()) {
- result = -1;
- } else if (entry1.getValue().getWriteRequestsCount() > entry2.getValue()
- .getWriteRequestsCount()) {
- result = 1;
- }
- if (reverseOrder) {
- result = -1 * result;
- }
- return result;
- }
- });
+ Collections.sort(entryList, (entry1, entry2) -> {
+ if (entry1 == null || entry1.getValue() == null) {
+ return -1;
+ } else if (entry2 == null || entry2.getValue() == null) {
+ return 1;
+ }
+ int result = Long.compare(entry1.getValue().getWriteRequestCount(),
+ entry2.getValue().getWriteRequestCount());
+ if (reverseOrder) {
+ result = -1 * result;
+ }
+ return result;
+ });
} else if (sortKey.equals("size")) {
- Collections.sort(entryList,
- new Comparator<Map.Entry<RegionInfo, RegionLoad>>() {
- public int compare(
- Map.Entry<RegionInfo, RegionLoad> entry1,
- Map.Entry<RegionInfo, RegionLoad> entry2) {
- if (entry1 == null || entry1.getValue() == null) {
- return -1;
- } else if (entry2 == null || entry2.getValue() == null) {
- return 1;
- }
- int result = 0;
- if (entry1.getValue().getStorefileSizeMB() < entry2.getValue()
- .getStorefileSizeMB()) {
- result = -1;
- } else if (entry1.getValue().getStorefileSizeMB() > entry2
- .getValue().getStorefileSizeMB()) {
- result = 1;
- }
- if (reverseOrder) {
- result = -1 * result;
- }
- return result;
- }
- });
+ Collections.sort(entryList, (entry1, entry2) -> {
+ if (entry1 == null || entry1.getValue() == null) {
+ return -1;
+ } else if (entry2 == null || entry2.getValue() == null) {
+ return 1;
+ }
+ int result = Double.compare(entry1.getValue().getStoreFileSize().get(),
+ entry2.getValue().getStoreFileSize().get());
+ if (reverseOrder) {
+ result = -1 * result;
+ }
+ return result;
+ });
} else if (sortKey.equals("filecount")) {
- Collections.sort(entryList,
- new Comparator<Map.Entry<RegionInfo, RegionLoad>>() {
- public int compare(
- Map.Entry<RegionInfo, RegionLoad> entry1,
- Map.Entry<RegionInfo, RegionLoad> entry2) {
- if (entry1 == null || entry1.getValue() == null) {
- return -1;
- } else if (entry2 == null || entry2.getValue() == null) {
- return 1;
- }
- int result = 0;
- if (entry1.getValue().getStorefiles() < entry2.getValue()
- .getStorefiles()) {
- result = -1;
- } else if (entry1.getValue().getStorefiles() > entry2.getValue()
- .getStorefiles()) {
- result = 1;
- }
- if (reverseOrder) {
- result = -1 * result;
- }
- return result;
- }
- });
+ Collections.sort(entryList, (entry1, entry2) -> {
+ if (entry1 == null || entry1.getValue() == null) {
+ return -1;
+ } else if (entry2 == null || entry2.getValue() == null) {
+ return 1;
+ }
+ int result = Integer.compare(entry1.getValue().getStoreCount(),
+ entry2.getValue().getStoreCount());
+ if (reverseOrder) {
+ result = -1 * result;
+ }
+ return result;
+ });
} else if (sortKey.equals("memstore")) {
- Collections.sort(entryList,
- new Comparator<Map.Entry<RegionInfo, RegionLoad>>() {
- public int compare(
- Map.Entry<RegionInfo, RegionLoad> entry1,
- Map.Entry<RegionInfo, RegionLoad> entry2) {
- if (entry1 == null || entry1.getValue()==null) {
- return -1;
- } else if (entry2 == null || entry2.getValue()==null) {
- return 1;
- }
- int result = 0;
- if (entry1.getValue().getMemStoreSizeMB() < entry2.getValue()
- .getMemStoreSizeMB()) {
- result = -1;
- } else if (entry1.getValue().getMemStoreSizeMB() > entry2
- .getValue().getMemStoreSizeMB()) {
- result = 1;
- }
- if (reverseOrder) {
- result = -1 * result;
- }
- return result;
- }
- });
+ Collections.sort(entryList, (entry1, entry2) -> {
+ if (entry1 == null || entry1.getValue() == null) {
+ return -1;
+ } else if (entry2 == null || entry2.getValue() == null) {
+ return 1;
+ }
+ int result = Double.compare(entry1.getValue().getMemStoreSize().get(),
+ entry2.getValue().getMemStoreSize().get());
+ if (reverseOrder) {
+ result = -1 * result;
+ }
+ return result;
+ });
} else if (sortKey.equals("locality")) {
- Collections.sort(entryList,
- new Comparator<Map.Entry<RegionInfo, RegionLoad>>() {
- public int compare(
- Map.Entry<RegionInfo, RegionLoad> entry1,
- Map.Entry<RegionInfo, RegionLoad> entry2) {
- if (entry1 == null || entry1.getValue()==null) {
- return -1;
- } else if (entry2 == null || entry2.getValue()==null) {
- return 1;
- }
- int result = 0;
- if (entry1.getValue().getDataLocality() < entry2.getValue()
- .getDataLocality()) {
- result = -1;
- } else if (entry1.getValue().getDataLocality() > entry2
- .getValue().getDataLocality()) {
- result = 1;
- }
- if (reverseOrder) {
- result = -1 * result;
- }
- return result;
- }
- });
+ Collections.sort(entryList, (entry1, entry2) -> {
+ if (entry1 == null || entry1.getValue() == null) {
+ return -1;
+ } else if (entry2 == null || entry2.getValue() == null) {
+ return 1;
+ }
+ int result = Double.compare(entry1.getValue().getDataLocality(),
+ entry2.getValue().getDataLocality());
+ if (reverseOrder) {
+ result = -1 * result;
+ }
+ return result;
+ });
}
}
numRegions = regions.size();
@@ -632,10 +568,10 @@ ShowDetailName&Start/End Key<input type="checkbox" id="showWhole" style="margin-
if (numRegionsToRender < 0) {
numRegionsToRender = numRegions;
}
- for (Map.Entry<RegionInfo, RegionLoad> hriEntry : entryList) {
+ for (Map.Entry<RegionInfo, RegionMetrics> hriEntry : entryList) {
RegionInfo regionInfo = hriEntry.getKey();
ServerName addr = regionsToServer.get(regionInfo);
- RegionLoad load = hriEntry.getValue();
+ RegionMetrics load = hriEntry.getValue();
String readReq = "N/A";
String writeReq = "N/A";
String regionSize = "N/A";
@@ -644,11 +580,11 @@ ShowDetailName&Start/End Key<input type="checkbox" id="showWhole" style="margin-
float locality = 0.0f;
String state = "N/A";
if(load != null) {
- readReq = String.format("%,1d", load.getReadRequestsCount());
- writeReq = String.format("%,1d", load.getWriteRequestsCount());
- regionSize = StringUtils.byteDesc(load.getStorefileSizeMB()*1024l*1024);
- fileCount = String.format("%,1d", load.getStorefiles());
- memSize = StringUtils.byteDesc(load.getMemStoreSizeMB()*1024l*1024);
+ readReq = String.format("%,1d", load.getReadRequestCount());
+ writeReq = String.format("%,1d", load.getWriteRequestCount());
+ regionSize = StringUtils.byteDesc((long) load.getStoreFileSize().get(Size.Unit.BYTE));
+ fileCount = String.format("%,1d", load.getStoreFileCount());
+ memSize = StringUtils.byteDesc((long) load.getMemStoreSize().get(Size.Unit.BYTE));
locality = load.getDataLocality();
}
@@ -657,7 +593,7 @@ ShowDetailName&Start/End Key<input type="checkbox" id="showWhole" style="margin-
}
if (addr != null) {
- ServerLoad sl = master.getServerManager().getLoad(addr);
+ ServerMetrics sl = master.getServerManager().getLoad(addr);
// This port might be wrong if RS actually ended up using something else.
urlRegionServer =
"//" + URLEncoder.encode(addr.getHostname()) + ":" + master.getRegionServerInfoPort(addr) + "/";
http://git-wip-us.apache.org/repos/asf/hbase/blob/7f6e971c/hbase-server/src/test/java/org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizer.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizer.java
index 02a35d8..bcc89b8 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizer.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizer.java
@@ -29,8 +29,9 @@ import java.util.List;
import java.util.Map;
import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.HBaseIOException;
-import org.apache.hadoop.hbase.RegionLoad;
+import org.apache.hadoop.hbase.RegionMetrics;
import org.apache.hadoop.hbase.ServerName;
+import org.apache.hadoop.hbase.Size;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.RegionInfo;
import org.apache.hadoop.hbase.client.RegionInfoBuilder;
@@ -363,15 +364,16 @@ public class TestSimpleRegionNormalizer {
getRegionServerOfRegion(any())).thenReturn(sn);
for (Map.Entry<byte[], Integer> region : regionSizes.entrySet()) {
- RegionLoad regionLoad = Mockito.mock(RegionLoad.class);
- when(regionLoad.getName()).thenReturn(region.getKey());
- when(regionLoad.getStorefileSizeMB()).thenReturn(region.getValue());
+ RegionMetrics regionLoad = Mockito.mock(RegionMetrics.class);
+ when(regionLoad.getRegionName()).thenReturn(region.getKey());
+ when(regionLoad.getStoreFileSize())
+ .thenReturn(new Size(region.getValue(), Size.Unit.MEGABYTE));
// this is possibly broken with jdk9, unclear if false positive or not
// suppress it for now, fix it when we get to running tests on 9
// see: http://errorprone.info/bugpattern/MockitoCast
when((Object) masterServices.getServerManager().getLoad(sn).
- getRegionsLoad().get(region.getKey())).thenReturn(regionLoad);
+ getRegionMetrics().get(region.getKey())).thenReturn(regionLoad);
}
try {
when(masterRpcServices.isSplitOrMergeEnabled(any(),