You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2012/05/30 00:02:43 UTC
svn commit: r1344023 -
/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/ServerLoad.java
Author: stack
Date: Tue May 29 22:02:43 2012
New Revision: 1344023
URL: http://svn.apache.org/viewvc?rev=1344023&view=rev
Log:
HBASE-6084 Server Load does not display correctly on the ui
Modified:
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/ServerLoad.java
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/ServerLoad.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/ServerLoad.java?rev=1344023&r1=1344022&r2=1344023&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/ServerLoad.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/ServerLoad.java Tue May 29 22:02:43 2012
@@ -20,14 +20,16 @@
package org.apache.hadoop.hbase;
+import java.util.Arrays;
import java.util.List;
import java.util.TreeSet;
-import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos;
-import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionLoad;
-import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.Coprocessor;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.classification.InterfaceStability;
+import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos;
+import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.Coprocessor;
+import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionLoad;
+import org.apache.hadoop.hbase.util.Strings;
/**
* This class is used for exporting current state of load on a RegionServer.
@@ -35,8 +37,38 @@ import org.apache.hadoop.classification.
@InterfaceAudience.Public
@InterfaceStability.Evolving
public class ServerLoad {
+ private int stores = 0;
+ private int storefiles = 0;
+ private int storeUncompressedSizeMB = 0;
+ private int storefileSizeMB = 0;
+ private int memstoreSizeMB = 0;
+ private int storefileIndexSizeMB = 0;
+ private int readRequestsCount = 0;
+ private int writeRequestsCount = 0;
+ private int rootIndexSizeKB = 0;
+ private int totalStaticIndexSizeKB = 0;
+ private int totalStaticBloomSizeKB = 0;
+ private long totalCompactingKVs = 0;
+ private long currentCompactedKVs = 0;
+
public ServerLoad(HBaseProtos.ServerLoad serverLoad) {
this.serverLoad = serverLoad;
+ for (HBaseProtos.RegionLoad rl: serverLoad.getRegionLoadsList()) {
+ stores += rl.getStores();
+ storefiles += rl.getStorefiles();
+ storeUncompressedSizeMB += rl.getStoreUncompressedSizeMB();
+ storefileSizeMB += rl.getStorefileSizeMB();
+ memstoreSizeMB += rl.getMemstoreSizeMB();
+ storefileIndexSizeMB += rl.getStorefileIndexSizeMB();
+ readRequestsCount += rl.getReadRequestsCount();
+ writeRequestsCount += rl.getWriteRequestsCount();
+ rootIndexSizeKB += rl.getRootIndexSizeKB();
+ totalStaticIndexSizeKB += rl.getTotalStaticIndexSizeKB();
+ totalStaticBloomSizeKB += rl.getTotalStaticBloomSizeKB();
+ totalCompactingKVs += rl.getTotalCompactingKVs();
+ currentCompactedKVs += rl.getCurrentCompactedKVs();
+ }
+
}
/* @return the underlying ServerLoad protobuf object */
@@ -103,6 +135,58 @@ public class ServerLoad {
return serverLoad.getCoprocessorsCount();
}
+ public int getStores() {
+ return stores;
+ }
+
+ public int getStorefiles() {
+ return storefiles;
+ }
+
+ public int getStoreUncompressedSizeMB() {
+ return storeUncompressedSizeMB;
+ }
+
+ public int getStorefileSizeMB() {
+ return storefileSizeMB;
+ }
+
+ public int getMemstoreSizeMB() {
+ return memstoreSizeMB;
+ }
+
+ public int getStorefileIndexSizeMB() {
+ return storefileIndexSizeMB;
+ }
+
+ public int getReadRequestsCount() {
+ return readRequestsCount;
+ }
+
+ public int getWriteRequestsCount() {
+ return writeRequestsCount;
+ }
+
+ public int getRootIndexSizeKB() {
+ return rootIndexSizeKB;
+ }
+
+ public int getTotalStaticIndexSizeKB() {
+ return totalStaticIndexSizeKB;
+ }
+
+ public int getTotalStaticBloomSizeKB() {
+ return totalStaticBloomSizeKB;
+ }
+
+ public long getTotalCompactingKVs() {
+ return totalCompactingKVs;
+ }
+
+ public long getCurrentCompactedKVs() {
+ return currentCompactedKVs;
+ }
+
/**
* Return the RegionServer-level coprocessors from a ServerLoad pb.
* @param sl - ServerLoad
@@ -150,6 +234,58 @@ public class ServerLoad {
return coprocessSet.toArray(new String[0]);
}
+
+ @Override
+ public String toString() {
+ StringBuilder sb =
+ Strings.appendKeyValue(new StringBuilder(), "requestsPerSecond",
+ Integer.valueOf(this.getRequestsPerSecond()));
+ Strings.appendKeyValue(sb, "numberOfOnlineRegions", Integer.valueOf(getRegionLoadsCount()));
+ sb = Strings.appendKeyValue(sb, "usedHeapMB", Integer.valueOf(this.getUsedHeapMB()));
+ sb = Strings.appendKeyValue(sb, "maxHeapMB", Integer.valueOf(getMaxHeapMB()));
+ sb = Strings.appendKeyValue(sb, "numberOfStores", Integer.valueOf(this.stores));
+ sb = Strings.appendKeyValue(sb, "numberOfStorefiles", Integer.valueOf(this.storefiles));
+ sb =
+ Strings.appendKeyValue(sb, "storefileUncompressedSizeMB",
+ Integer.valueOf(this.storeUncompressedSizeMB));
+ sb = Strings.appendKeyValue(sb, "storefileSizeMB", Integer.valueOf(this.storefileSizeMB));
+ if (this.storeUncompressedSizeMB != 0) {
+ sb =
+ Strings.appendKeyValue(
+ sb,
+ "compressionRatio",
+ String.format("%.4f", (float) this.storefileSizeMB
+ / (float) this.storeUncompressedSizeMB));
+ }
+ sb = Strings.appendKeyValue(sb, "memstoreSizeMB", Integer.valueOf(this.memstoreSizeMB));
+ sb =
+ Strings.appendKeyValue(sb, "storefileIndexSizeMB",
+ Integer.valueOf(this.storefileIndexSizeMB));
+ sb = Strings.appendKeyValue(sb, "readRequestsCount", Long.valueOf(this.readRequestsCount));
+ sb = Strings.appendKeyValue(sb, "writeRequestsCount", Long.valueOf(this.writeRequestsCount));
+ sb = Strings.appendKeyValue(sb, "rootIndexSizeKB", Integer.valueOf(this.rootIndexSizeKB));
+ sb =
+ Strings.appendKeyValue(sb, "totalStaticIndexSizeKB",
+ Integer.valueOf(this.totalStaticIndexSizeKB));
+ sb =
+ Strings.appendKeyValue(sb, "totalStaticBloomSizeKB",
+ Integer.valueOf(this.totalStaticBloomSizeKB));
+ sb = Strings.appendKeyValue(sb, "totalCompactingKVs", Long.valueOf(this.totalCompactingKVs));
+ sb = Strings.appendKeyValue(sb, "currentCompactedKVs", Long.valueOf(this.currentCompactedKVs));
+ float compactionProgressPct = Float.NaN;
+ if (this.totalCompactingKVs > 0) {
+ compactionProgressPct =
+ Float.valueOf((float) this.currentCompactedKVs / this.totalCompactingKVs);
+ }
+ sb = Strings.appendKeyValue(sb, "compactionProgressPct", compactionProgressPct);
+
+ String[] coprocessorStrings = getAllCoprocessors(this);
+ if (coprocessorStrings != null) {
+ sb = Strings.appendKeyValue(sb, "coprocessors", Arrays.toString(coprocessorStrings));
+ }
+ return sb.toString();
+ }
+
public static final ServerLoad EMPTY_SERVERLOAD =
new ServerLoad(HBaseProtos.ServerLoad.newBuilder().build());
}