You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2012/06/25 22:58:08 UTC
svn commit: r1353740 - in /hbase/trunk/hbase-server/src:
main/jamon/org/apache/hadoop/hbase/tmpl/master/
main/java/org/apache/hadoop/hbase/ main/java/org/apache/hadoop/hbase/avro/
main/java/org/apache/hadoop/hbase/io/ main/java/org/apache/hadoop/hbase/...
Author: tedyu
Date: Mon Jun 25 20:58:05 2012
New Revision: 1353740
URL: http://svn.apache.org/viewvc?rev=1353740&view=rev
Log:
HBASE-5933 Hide HBaseProtos.ServerLoad and HBaseProtos.RegionLoad from ClusterStatus (Gregory)
Modified:
hbase/trunk/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.jamon
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/ClusterStatus.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/HServerLoad.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/ServerLoad.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/avro/AvroUtil.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/io/HbaseObjectWritable.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/protobuf/generated/HBaseProtos.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterStatusResource.java
hbase/trunk/hbase-server/src/main/protobuf/hbase.proto
hbase/trunk/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/TestSerialization.java
hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/TestServerLoad.java
hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestClassLoading.java
hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHbaseObjectWritable.java
hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterNoCluster.java
Modified: hbase/trunk/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.jamon
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.jamon?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.jamon (original)
+++ hbase/trunk/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.jamon Mon Jun 25 20:58:05 2012
@@ -93,15 +93,15 @@ Arrays.sort(serverNames);
for (ServerName serverName: serverNames) {
ServerLoad sl = master.getServerManager().getLoad(serverName);
- int requestsPerSecond = 0,
- numRegionsOnline = 0;
+ double requestsPerSecond = 0.0;
+ int numRegionsOnline = 0;
if (sl != null) {
requestsPerSecond = sl.getRequestsPerSecond();
- numRegionsOnline = sl.getRegionLoadsCount();
- totalRegions += sl.getRegionLoadsCount();
+ numRegionsOnline = sl.getNumberOfRegions();
+ totalRegions += sl.getNumberOfRegions();
// Is this correct? Adding a rate to a measure.
- totalRequests += sl.getRequestsPerSecond();
+ totalRequests += sl.getNumberOfRequests();
}
long startcode = serverName.getStartcode();
</%java>
@@ -144,7 +144,7 @@ for (ServerName serverName: serverNames)
<td><& serverNameLink; serverName=serverName; &></td>
<td><% sl.getUsedHeapMB() %>MB</td>
<td><% sl.getMaxHeapMB() %>MB</td>
- <td><% sl.getMemstoreSizeMB() %>MB</td>
+ <td><% sl.getMemstoreSizeInMB() %>MB</td>
</tr>
<%java>
@@ -219,7 +219,7 @@ if (sl != null) {
<td><% sl.getStores() %></td>
<td><% sl.getStorefiles() %></td>
<td><% sl.getStoreUncompressedSizeMB() %>MB</td>
-<td><% sl.getStorefileSizeMB() %>MB</td>
+<td><% sl.getStorefileSizeInMB() %>MB</td>
<td><% sl.getTotalStaticIndexSizeKB() %>KB</td>
<td><% sl.getTotalStaticBloomSizeKB() %>KB</td>
</tr>
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/ClusterStatus.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/ClusterStatus.java?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/ClusterStatus.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/ClusterStatus.java Mon Jun 25 20:58:05 2012
@@ -33,7 +33,6 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.HashSet;
-import org.apache.hadoop.hbase.HServerLoad;
import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
import org.apache.hadoop.hbase.protobuf.generated.ClusterStatusProtos;
import org.apache.hadoop.hbase.protobuf.generated.ClusterStatusProtos.LiveServerInfo;
@@ -45,7 +44,7 @@ import org.apache.hadoop.hbase.protobuf.
import org.apache.hadoop.hbase.ServerLoad;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.classification.InterfaceStability;
-import org.apache.hadoop.hbase.HServerLoad.RegionLoad;
+import org.apache.hadoop.hbase.RegionLoad;
import org.apache.hadoop.hbase.master.AssignmentManager.RegionState;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.io.VersionMismatchException;
@@ -161,7 +160,7 @@ public class ClusterStatus extends Versi
public int getRegionsCount() {
int count = 0;
for (Map.Entry<ServerName, ServerLoad> e: this.liveServers.entrySet()) {
- count += e.getValue().getRegionLoadsCount();
+ count += e.getValue().getNumberOfRegions();
}
return count;
}
@@ -262,8 +261,8 @@ public class ClusterStatus extends Versi
* @param sn
* @return Server's load or null if not found.
*/
- public HServerLoad getLoad(final ServerName sn) {
- return HServerLoad.convert(this.liveServers.get(sn));
+ public ServerLoad getLoad(final ServerName sn) {
+ return this.liveServers.get(sn);
}
public Map<String, RegionState> getRegionsInTransition() {
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/HServerLoad.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/HServerLoad.java?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/HServerLoad.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/HServerLoad.java Mon Jun 25 20:58:05 2012
@@ -1,798 +0,0 @@
-/**
- * Copyright 2007 The Apache Software Foundation
- *
- * 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
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hbase;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.TreeSet;
-
-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.util.Bytes;
-import org.apache.hadoop.hbase.util.Strings;
-import org.apache.hadoop.io.VersionedWritable;
-import org.apache.hadoop.io.WritableComparable;
-import org.apache.hadoop.io.WritableUtils;
-
-/**
- * This class is used exporting current state of load on a RegionServer.
- */
-@InterfaceAudience.Public
-@InterfaceStability.Evolving
-public class HServerLoad extends VersionedWritable
-implements WritableComparable<HServerLoad> {
- private static final byte VERSION = 2;
- // Empty load instance.
- public static final HServerLoad EMPTY_HSERVERLOAD = new HServerLoad();
-
- /** Number of requests per second since last report.
- */
- // TODO: Instead build this up out of region counters.
- private int numberOfRequests = 0;
-
- /** Total Number of requests from the start of the region server.
- */
- private int totalNumberOfRequests = 0;
-
- /** the amount of used heap, in MB */
- private int usedHeapMB = 0;
-
- /** the maximum allowable size of the heap, in MB */
- private int maxHeapMB = 0;
-
- // Regionserver-level coprocessors, e.g., WALObserver implementations.
- // Region-level coprocessors, on the other hand, are stored inside RegionLoad
- // objects.
- private Set<String> coprocessors =
- new TreeSet<String>();
-
- /**
- * HBASE-4070: Improve region server metrics to report loaded coprocessors.
- *
- * @return Returns the set of all coprocessors on this
- * regionserver, where this set is the union of the
- * regionserver-level coprocessors on one hand, and all of the region-level
- * coprocessors, on the other.
- *
- * We must iterate through all regions loaded on this regionserver to
- * obtain all of the region-level coprocessors.
- */
- public String[] getCoprocessors() {
- TreeSet<String> returnValue = new TreeSet<String>(coprocessors);
- for (Map.Entry<byte[], RegionLoad> rls: getRegionsLoad().entrySet()) {
- for (String coprocessor: rls.getValue().getCoprocessors()) {
- returnValue.add(coprocessor);
- }
- }
- return returnValue.toArray(new String[0]);
- }
-
- /** per-region load metrics */
- private Map<byte[], RegionLoad> regionLoad =
- new TreeMap<byte[], RegionLoad>(Bytes.BYTES_COMPARATOR);
-
- /** @return the object version number */
- public byte getVersion() {
- return VERSION;
- }
-
- /**
- * Encapsulates per-region loading metrics.
- */
- public static class RegionLoad extends VersionedWritable {
- private static final byte VERSION = 2;
-
- /** @return the object version number */
- public byte getVersion() {
- return VERSION;
- }
-
- /** the region name */
- private byte[] name;
- /** the number of stores for the region */
- private int stores;
- /** the number of storefiles for the region */
- private int storefiles;
- /** the total size of the store files for the region, uncompressed, in MB */
- private int storeUncompressedSizeMB;
- /** the current total size of the store files for the region, in MB */
- private int storefileSizeMB;
- /** the current size of the memstore for the region, in MB */
- private int memstoreSizeMB;
-
- /**
- * The current total size of root-level store file indexes for the region,
- * in MB. The same as {@link #rootIndexSizeKB} but in MB.
- */
- private int storefileIndexSizeMB;
- /** the current total read requests made to region */
- private long readRequestsCount;
- /** the current total write requests made to region */
- private long writeRequestsCount;
- /** the total compacting key values in currently running compaction */
- private long totalCompactingKVs;
- /** the completed count of key values in currently running compaction */
- private long currentCompactedKVs;
-
- /** The current total size of root-level indexes for the region, in KB. */
- private int rootIndexSizeKB;
-
- /** The total size of all index blocks, not just the root level, in KB. */
- private int totalStaticIndexSizeKB;
-
- /**
- * The total size of all Bloom filter blocks, not just loaded into the
- * block cache, in KB.
- */
- private int totalStaticBloomSizeKB;
-
- // Region-level coprocessors.
- Set<String> coprocessors =
- new TreeSet<String>();
-
- /**
- * Constructor, for Writable
- */
- public RegionLoad() {
- super();
- }
-
- /**
- * @param name
- * @param stores
- * @param storefiles
- * @param storeUncompressedSizeMB
- * @param storefileSizeMB
- * @param memstoreSizeMB
- * @param storefileIndexSizeMB
- * @param readRequestsCount
- * @param writeRequestsCount
- * @param totalCompactingKVs
- * @param currentCompactedKVs
- * @param coprocessors
- */
- public RegionLoad(final byte[] name, final int stores,
- final int storefiles, final int storeUncompressedSizeMB,
- final int storefileSizeMB,
- final int memstoreSizeMB, final int storefileIndexSizeMB,
- final int rootIndexSizeKB, final int totalStaticIndexSizeKB,
- final int totalStaticBloomSizeKB,
- final long readRequestsCount, final long writeRequestsCount,
- final long totalCompactingKVs, final long currentCompactedKVs,
- final Set<String> coprocessors) {
- this.name = name;
- this.stores = stores;
- this.storefiles = storefiles;
- this.storeUncompressedSizeMB = storeUncompressedSizeMB;
- this.storefileSizeMB = storefileSizeMB;
- this.memstoreSizeMB = memstoreSizeMB;
- this.storefileIndexSizeMB = storefileIndexSizeMB;
- this.rootIndexSizeKB = rootIndexSizeKB;
- this.totalStaticIndexSizeKB = totalStaticIndexSizeKB;
- this.totalStaticBloomSizeKB = totalStaticBloomSizeKB;
- this.readRequestsCount = readRequestsCount;
- this.writeRequestsCount = writeRequestsCount;
- this.totalCompactingKVs = totalCompactingKVs;
- this.currentCompactedKVs = currentCompactedKVs;
- this.coprocessors = coprocessors;
- }
-
- // Getters
- private String[] getCoprocessors() {
- return coprocessors.toArray(new String[0]);
- }
-
- /**
- * @return the region name
- */
- public byte[] getName() {
- return name;
- }
-
- /**
- * @return the region name as a string
- */
- public String getNameAsString() {
- return Bytes.toString(name);
- }
-
- /**
- * @return the number of stores
- */
- public int getStores() {
- return stores;
- }
-
- /**
- * @return the number of storefiles
- */
- public int getStorefiles() {
- return storefiles;
- }
-
- /**
- * @return the total size of the storefiles, in MB
- */
- public int getStorefileSizeMB() {
- return storefileSizeMB;
- }
-
- /**
- * @return the memstore size, in MB
- */
- public int getMemStoreSizeMB() {
- return memstoreSizeMB;
- }
-
- /**
- * @return the approximate size of storefile indexes on the heap, in MB
- */
- public int getStorefileIndexSizeMB() {
- return storefileIndexSizeMB;
- }
-
- /**
- * @return the number of requests made to region
- */
- public long getRequestsCount() {
- return readRequestsCount + writeRequestsCount;
- }
-
- /**
- * @return the number of read requests made to region
- */
- public long getReadRequestsCount() {
- return readRequestsCount;
- }
-
- /**
- * @return the number of read requests made to region
- */
- public long getWriteRequestsCount() {
- return writeRequestsCount;
- }
-
- /**
- * @return The current total size of root-level indexes for the region, in KB.
- */
- public int getRootIndexSizeKB() {
- return rootIndexSizeKB;
- }
-
- /**
- * @return The total size of all index blocks, not just the root level, in KB.
- */
- public int getTotalStaticIndexSizeKB() {
- return totalStaticIndexSizeKB;
- }
-
- /**
- * @return The total size of all Bloom filter blocks, not just loaded into the
- * block cache, in KB.
- */
- public int getTotalStaticBloomSizeKB() {
- return totalStaticBloomSizeKB;
- }
-
- /**
- * @return the total number of kvs in current compaction
- */
- public long getTotalCompactingKVs() {
- return totalCompactingKVs;
- }
-
- /**
- * @return the number of already compacted kvs in current compaction
- */
- public long getCurrentCompactedKVs() {
- return currentCompactedKVs;
- }
-
- // Setters
-
- /**
- * @param name the region name
- */
- public void setName(byte[] name) {
- this.name = name;
- }
-
- /**
- * @param stores the number of stores
- */
- public void setStores(int stores) {
- this.stores = stores;
- }
-
- /**
- * @param storefiles the number of storefiles
- */
- public void setStorefiles(int storefiles) {
- this.storefiles = storefiles;
- }
-
- /**
- * @param memstoreSizeMB the memstore size, in MB
- */
- public void setMemStoreSizeMB(int memstoreSizeMB) {
- this.memstoreSizeMB = memstoreSizeMB;
- }
-
- /**
- * @param storefileIndexSizeMB the approximate size of storefile indexes
- * on the heap, in MB
- */
- public void setStorefileIndexSizeMB(int storefileIndexSizeMB) {
- this.storefileIndexSizeMB = storefileIndexSizeMB;
- }
-
- /**
- * @param requestsCount the number of read requests to region
- */
- public void setReadRequestsCount(int requestsCount) {
- this.readRequestsCount = requestsCount;
- }
-
- /**
- * @param requestsCount the number of write requests to region
- */
- public void setWriteRequestsCount(int requestsCount) {
- this.writeRequestsCount = requestsCount;
- }
-
- /**
- * @param totalCompactingKVs the number of kvs total in current compaction
- */
- public void setTotalCompactingKVs(long totalCompactingKVs) {
- this.totalCompactingKVs = totalCompactingKVs;
- }
-
- /**
- * @param currentCompactedKVs the number of kvs already compacted in
- * current compaction
- */
- public void setCurrentCompactedKVs(long currentCompactedKVs) {
- this.currentCompactedKVs = currentCompactedKVs;
- }
-
- /**
- * HBASE-5256 and HBASE-5283 introduced incompatible serialization changes
- * This method reads the fields in 0.92 serialization format, ex-version field
- * @param in
- * @throws IOException
- */
- private void readFields92(DataInput in) throws IOException {
- // in 0.92, the version was actually written twice, consume the second copy
- in.readByte(); // version
- int namelen = in.readInt();
- this.name = new byte[namelen];
- in.readFully(this.name);
- this.stores = in.readInt();
- this.storefiles = in.readInt();
- this.storeUncompressedSizeMB = in.readInt();
- this.storefileSizeMB = in.readInt();
- this.memstoreSizeMB = in.readInt();
- this.storefileIndexSizeMB = in.readInt();
- this.readRequestsCount = in.readInt();
- this.writeRequestsCount = in.readInt();
- this.rootIndexSizeKB = in.readInt();
- this.totalStaticIndexSizeKB = in.readInt();
- this.totalStaticBloomSizeKB = in.readInt();
- this.totalCompactingKVs = in.readLong();
- this.currentCompactedKVs = in.readLong();
- int coprocessorsSize = in.readInt();
- coprocessors = new TreeSet<String>();
- for (int i = 0; i < coprocessorsSize; i++) {
- coprocessors.add(in.readUTF());
- }
- }
-
- // Writable
- public void readFields(DataInput in) throws IOException {
- int version = in.readByte();
- if (version > VERSION) throw new IOException("Version mismatch; " + version);
- if (version == 1) {
- readFields92(in);
- return;
- }
- int namelen = WritableUtils.readVInt(in);
- this.name = new byte[namelen];
- in.readFully(this.name);
- this.stores = WritableUtils.readVInt(in);
- this.storefiles = WritableUtils.readVInt(in);
- this.storeUncompressedSizeMB = WritableUtils.readVInt(in);
- this.storefileSizeMB = WritableUtils.readVInt(in);
- this.memstoreSizeMB = WritableUtils.readVInt(in);
- this.storefileIndexSizeMB = WritableUtils.readVInt(in);
- this.readRequestsCount = WritableUtils.readVLong(in);
- this.writeRequestsCount = WritableUtils.readVLong(in);
- this.rootIndexSizeKB = WritableUtils.readVInt(in);
- this.totalStaticIndexSizeKB = WritableUtils.readVInt(in);
- this.totalStaticBloomSizeKB = WritableUtils.readVInt(in);
- this.totalCompactingKVs = WritableUtils.readVLong(in);
- this.currentCompactedKVs = WritableUtils.readVLong(in);
- int coprocessorsSize = WritableUtils.readVInt(in);
- coprocessors = new TreeSet<String>();
- for (int i = 0; i < coprocessorsSize; i++) {
- coprocessors.add(in.readUTF());
- }
- }
-
- public void write(DataOutput out) throws IOException {
- super.write(out);
- WritableUtils.writeVInt(out, name.length);
- out.write(name);
- WritableUtils.writeVInt(out, stores);
- WritableUtils.writeVInt(out, storefiles);
- WritableUtils.writeVInt(out, storeUncompressedSizeMB);
- WritableUtils.writeVInt(out, storefileSizeMB);
- WritableUtils.writeVInt(out, memstoreSizeMB);
- WritableUtils.writeVInt(out, storefileIndexSizeMB);
- WritableUtils.writeVLong(out, readRequestsCount);
- WritableUtils.writeVLong(out, writeRequestsCount);
- WritableUtils.writeVInt(out, rootIndexSizeKB);
- WritableUtils.writeVInt(out, totalStaticIndexSizeKB);
- WritableUtils.writeVInt(out, totalStaticBloomSizeKB);
- WritableUtils.writeVLong(out, totalCompactingKVs);
- WritableUtils.writeVLong(out, currentCompactedKVs);
- WritableUtils.writeVInt(out, coprocessors.size());
- for (String coprocessor: coprocessors) {
- out.writeUTF(coprocessor);
- }
- }
-
- /**
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- StringBuilder sb = Strings.appendKeyValue(new StringBuilder(), "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 coprocessors = Arrays.toString(getCoprocessors());
- if (coprocessors != null) {
- sb = Strings.appendKeyValue(sb, "coprocessors",
- Arrays.toString(getCoprocessors()));
- }
- return sb.toString();
- }
- }
-
- /*
- * TODO: Other metrics that might be considered when the master is actually
- * doing load balancing instead of merely trying to decide where to assign
- * a region:
- * <ul>
- * <li># of CPUs, heap size (to determine the "class" of machine). For
- * now, we consider them to be homogeneous.</li>
- * <li>#requests per region (Map<{String|HRegionInfo}, Integer>)</li>
- * <li>#compactions and/or #splits (churn)</li>
- * <li>server death rate (maybe there is something wrong with this server)</li>
- * </ul>
- */
-
- /** default constructor (used by Writable) */
- public HServerLoad() {
- super();
- }
-
- /**
- * Constructor
- * @param numberOfRequests
- * @param usedHeapMB
- * @param maxHeapMB
- * @param coprocessors : coprocessors loaded at the regionserver-level
- */
- public HServerLoad(final int totalNumberOfRequests,
- final int numberOfRequests, final int usedHeapMB, final int maxHeapMB,
- final Map<byte[], RegionLoad> regionLoad,
- final Set<String> coprocessors) {
- this.numberOfRequests = numberOfRequests;
- this.usedHeapMB = usedHeapMB;
- this.maxHeapMB = maxHeapMB;
- this.regionLoad = regionLoad;
- this.totalNumberOfRequests = totalNumberOfRequests;
- this.coprocessors = coprocessors;
- }
-
- /**
- * Constructor
- * @param hsl the template HServerLoad
- */
- public HServerLoad(final HServerLoad hsl) {
- this(hsl.totalNumberOfRequests, hsl.numberOfRequests, hsl.usedHeapMB,
- hsl.maxHeapMB, hsl.getRegionsLoad(), hsl.coprocessors);
- for (Map.Entry<byte[], RegionLoad> e : hsl.regionLoad.entrySet()) {
- this.regionLoad.put(e.getKey(), e.getValue());
- }
- }
-
- /**
- * Originally, this method factored in the effect of requests going to the
- * server as well. However, this does not interact very well with the current
- * region rebalancing code, which only factors number of regions. For the
- * interim, until we can figure out how to make rebalancing use all the info
- * available, we're just going to make load purely the number of regions.
- *
- * @return load factor for this server
- */
- public int getLoad() {
- // int load = numberOfRequests == 0 ? 1 : numberOfRequests;
- // load *= numberOfRegions == 0 ? 1 : numberOfRegions;
- // return load;
- return this.regionLoad.size();
- }
-
- /**
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- return toString(1);
- }
-
- /**
- * Returns toString() with the number of requests divided by the message
- * interval in seconds
- * @param msgInterval
- * @return The load as a String
- */
- public String toString(int msgInterval) {
- int numberOfRegions = this.regionLoad.size();
- StringBuilder sb = new StringBuilder();
- sb = Strings.appendKeyValue(sb, "requestsPerSecond",
- Integer.valueOf(numberOfRequests/msgInterval));
- sb = Strings.appendKeyValue(sb, "numberOfOnlineRegions",
- Integer.valueOf(numberOfRegions));
- sb = Strings.appendKeyValue(sb, "usedHeapMB",
- Integer.valueOf(this.usedHeapMB));
- sb = Strings.appendKeyValue(sb, "maxHeapMB", Integer.valueOf(maxHeapMB));
- return sb.toString();
- }
-
- /**
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null) {
- return false;
- }
- if (getClass() != o.getClass()) {
- return false;
- }
- return compareTo((HServerLoad)o) == 0;
- }
-
- // Getters
-
- /**
- * @return the numberOfRegions
- */
- public int getNumberOfRegions() {
- return this.regionLoad.size();
- }
-
- /**
- * @return the numberOfRequests per second.
- */
- public int getNumberOfRequests() {
- return numberOfRequests;
- }
-
- /**
- * @return the numberOfRequests
- */
- public int getTotalNumberOfRequests() {
- return totalNumberOfRequests;
- }
-
- /**
- * @return the amount of heap in use, in MB
- */
- public int getUsedHeapMB() {
- return usedHeapMB;
- }
-
- /**
- * @return the maximum allowable heap size, in MB
- */
- public int getMaxHeapMB() {
- return maxHeapMB;
- }
-
- /**
- * @return region load metrics
- */
- public Map<byte[], RegionLoad> getRegionsLoad() {
- return Collections.unmodifiableMap(regionLoad);
- }
-
- /**
- * @return Count of storefiles on this regionserver
- */
- public int getStorefiles() {
- int count = 0;
- for (RegionLoad info: regionLoad.values())
- count += info.getStorefiles();
- return count;
- }
-
- /**
- * @return Total size of store files in MB
- */
- public int getStorefileSizeInMB() {
- int count = 0;
- for (RegionLoad info: regionLoad.values())
- count += info.getStorefileSizeMB();
- return count;
- }
-
- /**
- * @return Size of memstores in MB
- */
- public int getMemStoreSizeInMB() {
- int count = 0;
- for (RegionLoad info: regionLoad.values())
- count += info.getMemStoreSizeMB();
- return count;
- }
-
- /**
- * @return Size of store file indexes in MB
- */
- public int getStorefileIndexSizeInMB() {
- int count = 0;
- for (RegionLoad info: regionLoad.values())
- count += info.getStorefileIndexSizeMB();
- return count;
- }
-
- public static HServerLoad convert(ServerLoad sl) {
- // TODO: This conversion of ServerLoad to HServerLoad is temporary,
- // will be cleaned up in HBASE-5445. Using the ClusterStatus proto brings
- // in a lot of other changes, so it makes sense to break this up.
- Map<byte[],RegionLoad> regionLoad = new HashMap<byte[],RegionLoad>();
- for (HBaseProtos.RegionLoad rl : sl.getRegionLoadsList()) {
- Set<String> regionCoprocessors = new HashSet<String>();
- for (HBaseProtos.Coprocessor coprocessor
- : rl.getCoprocessorsList()) {
- regionCoprocessors.add(coprocessor.getName());
- }
-
- byte [] regionName = rl.getRegionSpecifier().getValue().toByteArray();
- RegionLoad converted = new RegionLoad(regionName,
- rl.getStores(),rl.getStorefiles(),rl.getStoreUncompressedSizeMB(),
- rl.getStorefileSizeMB(),rl.getMemstoreSizeMB(),
- rl.getStorefileIndexSizeMB(),rl.getRootIndexSizeKB(),
- rl.getTotalStaticIndexSizeKB(),rl.getTotalStaticBloomSizeKB(),
- rl.getReadRequestsCount(),rl.getWriteRequestsCount(),
- rl.getTotalCompactingKVs(),rl.getCurrentCompactedKVs(),
- regionCoprocessors);
- regionLoad.put(regionName, converted);
- }
-
- Set<String> coprocessors =
- new HashSet<String>(Arrays.asList(ServerLoad.getRegionServerCoprocessors(sl)));
- HServerLoad hsl = new HServerLoad(sl.getTotalNumberOfRequests(),
- sl.getRequestsPerSecond(),sl.getUsedHeapMB(),sl.getMaxHeapMB(),
- regionLoad,coprocessors);
-
- return hsl;
- }
- // Writable
-
- /**
- * @deprecated Writables are going away.
- */
- @Deprecated
- public void readFields(DataInput in) throws IOException {
- super.readFields(in);
- int version = in.readByte();
- if (version > VERSION) throw new IOException("Version mismatch; " + version);
- numberOfRequests = in.readInt();
- usedHeapMB = in.readInt();
- maxHeapMB = in.readInt();
- int numberOfRegions = in.readInt();
- for (int i = 0; i < numberOfRegions; i++) {
- RegionLoad rl = new RegionLoad();
- rl.readFields(in);
- regionLoad.put(rl.getName(), rl);
- }
- totalNumberOfRequests = in.readInt();
- int coprocessorsSize = in.readInt();
- for(int i = 0; i < coprocessorsSize; i++) {
- coprocessors.add(in.readUTF());
- }
- }
-
- /**
- * @deprecated Writables are going away.
- */
- @Deprecated
- public void write(DataOutput out) throws IOException {
- super.write(out);
- out.writeByte(VERSION);
- out.writeInt(numberOfRequests);
- out.writeInt(usedHeapMB);
- out.writeInt(maxHeapMB);
- out.writeInt(this.regionLoad.size());
- for (RegionLoad rl: regionLoad.values())
- rl.write(out);
- out.writeInt(totalNumberOfRequests);
- out.writeInt(coprocessors.size());
- for (String coprocessor: coprocessors) {
- out.writeUTF(coprocessor);
- }
- }
-
- // Comparable
-
- public int compareTo(HServerLoad o) {
- return this.getLoad() - o.getLoad();
- }
-}
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=1353740&r1=1353739&r2=1353740&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 Mon Jun 25 20:58:05 2012
@@ -21,14 +21,18 @@
package org.apache.hadoop.hbase;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
import java.util.TreeSet;
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.RegionLoad;
+import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.Strings;
/**
@@ -78,12 +82,12 @@ public class ServerLoad {
protected HBaseProtos.ServerLoad serverLoad;
- /* @return number of requests per second since last report. */
- public int getRequestsPerSecond() {
- return serverLoad.getRequestsPerSecond();
+ /* @return number of requests since last report. */
+ public int getNumberOfRequests() {
+ return serverLoad.getNumberOfRequests();
}
- public boolean hasRequestsPerSecond() {
- return serverLoad.hasRequestsPerSecond();
+ public boolean hasNumberOfRequests() {
+ return serverLoad.hasNumberOfRequests();
}
/* @return total Number of requests from the start of the region server. */
@@ -110,31 +114,6 @@ public class ServerLoad {
return serverLoad.hasMaxHeapMB();
}
- /* Returns list of RegionLoads, which contain information on the load of individual regions. */
- public List<RegionLoad> getRegionLoadsList() {
- return serverLoad.getRegionLoadsList();
- }
- public RegionLoad getRegionLoads(int index) {
- return serverLoad.getRegionLoads(index);
- }
- public int getRegionLoadsCount() {
- return serverLoad.getRegionLoadsCount();
- }
-
- /**
- * @return the list Regionserver-level coprocessors, e.g., WALObserver implementations.
- * Region-level coprocessors, on the other hand, are stored inside the RegionLoad objects.
- */
- public List<Coprocessor> getCoprocessorsList() {
- return serverLoad.getCoprocessorsList();
- }
- public Coprocessor getCoprocessors(int index) {
- return serverLoad.getCoprocessors(index);
- }
- public int getCoprocessorsCount() {
- return serverLoad.getCoprocessorsCount();
- }
-
public int getStores() {
return stores;
}
@@ -147,15 +126,15 @@ public class ServerLoad {
return storeUncompressedSizeMB;
}
- public int getStorefileSizeMB() {
+ public int getStorefileSizeInMB() {
return storefileSizeMB;
}
- public int getMemstoreSizeMB() {
+ public int getMemstoreSizeInMB() {
return memstoreSizeMB;
}
- public int getStorefileIndexSizeMB() {
+ public int getStorefileIndexSizeInMB() {
return storefileIndexSizeMB;
}
@@ -188,16 +167,48 @@ public class ServerLoad {
}
/**
- * Return the RegionServer-level coprocessors from a ServerLoad pb.
- * @param sl - ServerLoad
- * @return string array of loaded RegionServer-level coprocessors
+ * @return the number of regions
*/
- public static String[] getRegionServerCoprocessors(ServerLoad sl) {
- if (sl == null) {
- return null;
+ public int getNumberOfRegions() {
+ return serverLoad.getRegionLoadsCount();
+ }
+
+ /**
+ * Originally, this method factored in the effect of requests going to the
+ * server as well. However, this does not interact very well with the current
+ * region rebalancing code, which only factors number of regions. For the
+ * interim, until we can figure out how to make rebalancing use all the info
+ * available, we're just going to make load purely the number of regions.
+ *
+ * @return load factor for this server
+ */
+ public int getLoad() {
+ // See above comment
+ // int load = numberOfRequests == 0 ? 1 : numberOfRequests;
+ // load *= numberOfRegions == 0 ? 1 : numberOfRegions;
+ // return load;
+ return getNumberOfRegions();
+ }
+
+ /**
+ * @return region load metrics
+ */
+ public Map<byte[], RegionLoad> getRegionsLoad() {
+ Map<byte[], RegionLoad> regionLoads =
+ new TreeMap<byte[], RegionLoad>(Bytes.BYTES_COMPARATOR);
+ for (HBaseProtos.RegionLoad rl : serverLoad.getRegionLoadsList()) {
+ RegionLoad regionLoad = new RegionLoad(rl);
+ regionLoads.put(regionLoad.getName(), regionLoad);
}
+ return regionLoads;
+ }
- List<Coprocessor> list = sl.getCoprocessorsList();
+ /**
+ * Return the RegionServer-level coprocessors
+ * @return string array of loaded RegionServer-level coprocessors
+ */
+ public String[] getRegionServerCoprocessors() {
+ List<Coprocessor> list = getServerLoadPB().getCoprocessorsList();
String [] ret = new String[list.size()];
int i = 0;
for (Coprocessor elem : list) {
@@ -209,23 +220,18 @@ public class ServerLoad {
/**
* Return the RegionServer-level and Region-level coprocessors
- * from a ServerLoad pb.
- * @param sl - ServerLoad
* @return string array of loaded RegionServer-level and
* Region-level coprocessors
*/
- public static String[] getAllCoprocessors(ServerLoad sl) {
- if (sl == null) {
- return null;
- }
-
+ public String[] getAllCoprocessors() {
// Need a set to remove duplicates, but since generated Coprocessor class
// is not Comparable, make it a Set<String> instead of Set<Coprocessor>
TreeSet<String> coprocessSet = new TreeSet<String>();
- for (Coprocessor coprocessor : sl.getCoprocessorsList()) {
+ for (Coprocessor coprocessor : getServerLoadPB().getCoprocessorsList()) {
coprocessSet.add(coprocessor.getName());
}
- for (RegionLoad rl : sl.getRegionLoadsList()) {
+
+ for (HBaseProtos.RegionLoad rl : getServerLoadPB().getRegionLoadsList()) {
for (Coprocessor coprocessor : rl.getCoprocessorsList()) {
coprocessSet.add(coprocessor.getName());
}
@@ -234,13 +240,30 @@ public class ServerLoad {
return coprocessSet.toArray(new String[0]);
}
+ /**
+ * @deprecated Use getAllCoprocessors instead
+ */
+ public String[] getCoprocessors() {
+ return getAllCoprocessors();
+ }
+ /**
+ * @return number of requests per second received since the last report
+ */
+ public double getRequestsPerSecond() {
+ long msgInterval = serverLoad.getReportEndTime() - serverLoad.getReportStartTime();
+ return (msgInterval==0)?0.0:(getNumberOfRequests()/(double)msgInterval);
+ }
+
+ /**
+ * @see java.lang.Object#toString()
+ */
@Override
public String toString() {
- StringBuilder sb =
+ StringBuilder sb =
Strings.appendKeyValue(new StringBuilder(), "requestsPerSecond",
- Integer.valueOf(this.getRequestsPerSecond()));
- Strings.appendKeyValue(sb, "numberOfOnlineRegions", Integer.valueOf(getRegionLoadsCount()));
+ Double.valueOf(getRequestsPerSecond()));
+ Strings.appendKeyValue(sb, "numberOfOnlineRegions", Integer.valueOf(getNumberOfRegions()));
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));
@@ -279,7 +302,7 @@ public class ServerLoad {
}
sb = Strings.appendKeyValue(sb, "compactionProgressPct", compactionProgressPct);
- String[] coprocessorStrings = getAllCoprocessors(this);
+ String[] coprocessorStrings = getAllCoprocessors();
if (coprocessorStrings != null) {
sb = Strings.appendKeyValue(sb, "coprocessors", Arrays.toString(coprocessorStrings));
}
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/avro/AvroUtil.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/avro/AvroUtil.java?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/avro/AvroUtil.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/avro/AvroUtil.java Mon Jun 25 20:58:05 2012
@@ -31,7 +31,8 @@ import org.apache.hadoop.classification.
import org.apache.hadoop.hbase.ClusterStatus;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HServerAddress;
-import org.apache.hadoop.hbase.HServerLoad;
+import org.apache.hadoop.hbase.ServerLoad;
+import org.apache.hadoop.hbase.RegionLoad;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.ServerName;
@@ -76,7 +77,7 @@ public class AvroUtil {
return asa;
}
- static public ARegionLoad hrlToARL(HServerLoad.RegionLoad rl) throws IOException {
+ static public ARegionLoad hrlToARL(RegionLoad rl) throws IOException {
ARegionLoad arl = new ARegionLoad();
arl.memStoreSizeMB = rl.getMemStoreSizeMB();
arl.name = ByteBuffer.wrap(rl.getName());
@@ -87,20 +88,20 @@ public class AvroUtil {
return arl;
}
- static public AServerLoad hslToASL(HServerLoad hsl) throws IOException {
+ static public AServerLoad hslToASL(ServerLoad sl) throws IOException {
AServerLoad asl = new AServerLoad();
- asl.load = hsl.getLoad();
- asl.maxHeapMB = hsl.getMaxHeapMB();
- asl.memStoreSizeInMB = hsl.getMemStoreSizeInMB();
- asl.numberOfRegions = hsl.getNumberOfRegions();
- asl.numberOfRequests = hsl.getNumberOfRequests();
+ asl.load = sl.getLoad();
+ asl.maxHeapMB = sl.getMaxHeapMB();
+ asl.memStoreSizeInMB = sl.getMemstoreSizeInMB();
+ asl.numberOfRegions = sl.getNumberOfRegions();
+ asl.numberOfRequests = sl.getNumberOfRequests();
- Collection<HServerLoad.RegionLoad> regionLoads = hsl.getRegionsLoad().values();
+ Collection<RegionLoad> regionLoads = sl.getRegionsLoad().values();
Schema s = Schema.createArray(ARegionLoad.SCHEMA$);
GenericData.Array<ARegionLoad> aregionLoads = null;
if (regionLoads != null) {
aregionLoads = new GenericData.Array<ARegionLoad>(regionLoads.size(), s);
- for (HServerLoad.RegionLoad rl : regionLoads) {
+ for (RegionLoad rl : regionLoads) {
aregionLoads.add(hrlToARL(rl));
}
} else {
@@ -108,17 +109,17 @@ public class AvroUtil {
}
asl.regionsLoad = aregionLoads;
- asl.storefileIndexSizeInMB = hsl.getStorefileIndexSizeInMB();
- asl.storefiles = hsl.getStorefiles();
- asl.storefileSizeInMB = hsl.getStorefileSizeInMB();
- asl.usedHeapMB = hsl.getUsedHeapMB();
+ asl.storefileIndexSizeInMB = sl.getStorefileIndexSizeInMB();
+ asl.storefiles = sl.getStorefiles();
+ asl.storefileSizeInMB = sl.getStorefileSizeInMB();
+ asl.usedHeapMB = sl.getUsedHeapMB();
return asl;
}
- static public AServerInfo hsiToASI(ServerName sn, HServerLoad hsl) throws IOException {
+ static public AServerInfo hsiToASI(ServerName sn, ServerLoad sl) throws IOException {
AServerInfo asi = new AServerInfo();
asi.infoPort = -1;
- asi.load = hslToASL(hsl);
+ asi.load = hslToASL(sl);
asi.serverAddress = hsaToASA(new HServerAddress(sn.getHostname(), sn.getPort()));
asi.serverName = new Utf8(sn.toString());
asi.startCode = sn.getStartcode();
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/io/HbaseObjectWritable.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/io/HbaseObjectWritable.java?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/io/HbaseObjectWritable.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/io/HbaseObjectWritable.java Mon Jun 25 20:58:05 2012
@@ -48,7 +48,6 @@ import org.apache.hadoop.hbase.HConstant
import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.HServerAddress;
import org.apache.hadoop.hbase.HServerInfo;
-import org.apache.hadoop.hbase.HServerLoad;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.Action;
@@ -253,7 +252,9 @@ public class HbaseObjectWritable impleme
addToMap(ColumnRangeFilter.class, code++);
- addToMap(HServerLoad.class, code++);
+ // HServerLoad no longer exists; increase code so other classes stay the same.
+ code++;
+ //addToMap(HServerLoad.class, code++);
addToMap(RegionOpeningState.class, code++);
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java Mon Jun 25 20:58:05 2012
@@ -304,7 +304,7 @@ public class ServerManager {
double averageLoad = 0.0;
for (ServerLoad sl: this.onlineServers.values()) {
numServers++;
- totalLoad += sl.getRegionLoadsCount();
+ totalLoad += sl.getNumberOfRegions();
}
averageLoad = (double)totalLoad / (double)numServers;
return averageLoad;
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java Mon Jun 25 20:58:05 2012
@@ -25,8 +25,8 @@ import org.apache.hadoop.classification.
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.ClusterStatus;
import org.apache.hadoop.hbase.HRegionInfo;
-import org.apache.hadoop.hbase.HServerLoad;
-import org.apache.hadoop.hbase.HServerLoad.RegionLoad;
+import org.apache.hadoop.hbase.ServerLoad;
+import org.apache.hadoop.hbase.RegionLoad;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.master.MasterServices;
import org.apache.hadoop.hbase.master.RegionPlan;
@@ -316,9 +316,9 @@ public class StochasticLoadBalancer exte
private void updateRegionLoad() {
loads.clear();
for (ServerName sn : clusterStatus.getServers()) {
- HServerLoad hsl = clusterStatus.getLoad(sn);
- if (hsl == null) continue;
- for (Entry<byte[], RegionLoad> entry : hsl.getRegionsLoad().entrySet()) {
+ ServerLoad sl = clusterStatus.getLoad(sn);
+ if (sl == null) continue;
+ for (Entry<byte[], RegionLoad> entry : sl.getRegionsLoad().entrySet()) {
loads.put(Bytes.toString(entry.getKey()), entry.getValue());
}
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/protobuf/generated/HBaseProtos.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/protobuf/generated/HBaseProtos.java?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/protobuf/generated/HBaseProtos.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/protobuf/generated/HBaseProtos.java Mon Jun 25 20:58:05 2012
@@ -5521,9 +5521,9 @@ public final class HBaseProtos {
public interface ServerLoadOrBuilder
extends com.google.protobuf.MessageOrBuilder {
- // optional uint32 requestsPerSecond = 1;
- boolean hasRequestsPerSecond();
- int getRequestsPerSecond();
+ // optional uint32 numberOfRequests = 1;
+ boolean hasNumberOfRequests();
+ int getNumberOfRequests();
// optional uint32 totalNumberOfRequests = 2;
boolean hasTotalNumberOfRequests();
@@ -5556,6 +5556,14 @@ public final class HBaseProtos {
getCoprocessorsOrBuilderList();
org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.CoprocessorOrBuilder getCoprocessorsOrBuilder(
int index);
+
+ // optional uint64 reportStartTime = 7;
+ boolean hasReportStartTime();
+ long getReportStartTime();
+
+ // optional uint64 reportEndTime = 8;
+ boolean hasReportEndTime();
+ long getReportEndTime();
}
public static final class ServerLoad extends
com.google.protobuf.GeneratedMessage
@@ -5586,14 +5594,14 @@ public final class HBaseProtos {
}
private int bitField0_;
- // optional uint32 requestsPerSecond = 1;
- public static final int REQUESTSPERSECOND_FIELD_NUMBER = 1;
- private int requestsPerSecond_;
- public boolean hasRequestsPerSecond() {
+ // optional uint32 numberOfRequests = 1;
+ public static final int NUMBEROFREQUESTS_FIELD_NUMBER = 1;
+ private int numberOfRequests_;
+ public boolean hasNumberOfRequests() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
- public int getRequestsPerSecond() {
- return requestsPerSecond_;
+ public int getNumberOfRequests() {
+ return numberOfRequests_;
}
// optional uint32 totalNumberOfRequests = 2;
@@ -5668,13 +5676,35 @@ public final class HBaseProtos {
return coprocessors_.get(index);
}
+ // optional uint64 reportStartTime = 7;
+ public static final int REPORTSTARTTIME_FIELD_NUMBER = 7;
+ private long reportStartTime_;
+ public boolean hasReportStartTime() {
+ return ((bitField0_ & 0x00000010) == 0x00000010);
+ }
+ public long getReportStartTime() {
+ return reportStartTime_;
+ }
+
+ // optional uint64 reportEndTime = 8;
+ public static final int REPORTENDTIME_FIELD_NUMBER = 8;
+ private long reportEndTime_;
+ public boolean hasReportEndTime() {
+ return ((bitField0_ & 0x00000020) == 0x00000020);
+ }
+ public long getReportEndTime() {
+ return reportEndTime_;
+ }
+
private void initFields() {
- requestsPerSecond_ = 0;
+ numberOfRequests_ = 0;
totalNumberOfRequests_ = 0;
usedHeapMB_ = 0;
maxHeapMB_ = 0;
regionLoads_ = java.util.Collections.emptyList();
coprocessors_ = java.util.Collections.emptyList();
+ reportStartTime_ = 0L;
+ reportEndTime_ = 0L;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
@@ -5701,7 +5731,7 @@ public final class HBaseProtos {
throws java.io.IOException {
getSerializedSize();
if (((bitField0_ & 0x00000001) == 0x00000001)) {
- output.writeUInt32(1, requestsPerSecond_);
+ output.writeUInt32(1, numberOfRequests_);
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
output.writeUInt32(2, totalNumberOfRequests_);
@@ -5718,6 +5748,12 @@ public final class HBaseProtos {
for (int i = 0; i < coprocessors_.size(); i++) {
output.writeMessage(6, coprocessors_.get(i));
}
+ if (((bitField0_ & 0x00000010) == 0x00000010)) {
+ output.writeUInt64(7, reportStartTime_);
+ }
+ if (((bitField0_ & 0x00000020) == 0x00000020)) {
+ output.writeUInt64(8, reportEndTime_);
+ }
getUnknownFields().writeTo(output);
}
@@ -5729,7 +5765,7 @@ public final class HBaseProtos {
size = 0;
if (((bitField0_ & 0x00000001) == 0x00000001)) {
size += com.google.protobuf.CodedOutputStream
- .computeUInt32Size(1, requestsPerSecond_);
+ .computeUInt32Size(1, numberOfRequests_);
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
size += com.google.protobuf.CodedOutputStream
@@ -5751,6 +5787,14 @@ public final class HBaseProtos {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(6, coprocessors_.get(i));
}
+ if (((bitField0_ & 0x00000010) == 0x00000010)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeUInt64Size(7, reportStartTime_);
+ }
+ if (((bitField0_ & 0x00000020) == 0x00000020)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeUInt64Size(8, reportEndTime_);
+ }
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
@@ -5774,10 +5818,10 @@ public final class HBaseProtos {
org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerLoad other = (org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerLoad) obj;
boolean result = true;
- result = result && (hasRequestsPerSecond() == other.hasRequestsPerSecond());
- if (hasRequestsPerSecond()) {
- result = result && (getRequestsPerSecond()
- == other.getRequestsPerSecond());
+ result = result && (hasNumberOfRequests() == other.hasNumberOfRequests());
+ if (hasNumberOfRequests()) {
+ result = result && (getNumberOfRequests()
+ == other.getNumberOfRequests());
}
result = result && (hasTotalNumberOfRequests() == other.hasTotalNumberOfRequests());
if (hasTotalNumberOfRequests()) {
@@ -5798,6 +5842,16 @@ public final class HBaseProtos {
.equals(other.getRegionLoadsList());
result = result && getCoprocessorsList()
.equals(other.getCoprocessorsList());
+ result = result && (hasReportStartTime() == other.hasReportStartTime());
+ if (hasReportStartTime()) {
+ result = result && (getReportStartTime()
+ == other.getReportStartTime());
+ }
+ result = result && (hasReportEndTime() == other.hasReportEndTime());
+ if (hasReportEndTime()) {
+ result = result && (getReportEndTime()
+ == other.getReportEndTime());
+ }
result = result &&
getUnknownFields().equals(other.getUnknownFields());
return result;
@@ -5807,9 +5861,9 @@ public final class HBaseProtos {
public int hashCode() {
int hash = 41;
hash = (19 * hash) + getDescriptorForType().hashCode();
- if (hasRequestsPerSecond()) {
- hash = (37 * hash) + REQUESTSPERSECOND_FIELD_NUMBER;
- hash = (53 * hash) + getRequestsPerSecond();
+ if (hasNumberOfRequests()) {
+ hash = (37 * hash) + NUMBEROFREQUESTS_FIELD_NUMBER;
+ hash = (53 * hash) + getNumberOfRequests();
}
if (hasTotalNumberOfRequests()) {
hash = (37 * hash) + TOTALNUMBEROFREQUESTS_FIELD_NUMBER;
@@ -5831,6 +5885,14 @@ public final class HBaseProtos {
hash = (37 * hash) + COPROCESSORS_FIELD_NUMBER;
hash = (53 * hash) + getCoprocessorsList().hashCode();
}
+ if (hasReportStartTime()) {
+ hash = (37 * hash) + REPORTSTARTTIME_FIELD_NUMBER;
+ hash = (53 * hash) + hashLong(getReportStartTime());
+ }
+ if (hasReportEndTime()) {
+ hash = (37 * hash) + REPORTENDTIME_FIELD_NUMBER;
+ hash = (53 * hash) + hashLong(getReportEndTime());
+ }
hash = (29 * hash) + getUnknownFields().hashCode();
return hash;
}
@@ -5949,7 +6011,7 @@ public final class HBaseProtos {
public Builder clear() {
super.clear();
- requestsPerSecond_ = 0;
+ numberOfRequests_ = 0;
bitField0_ = (bitField0_ & ~0x00000001);
totalNumberOfRequests_ = 0;
bitField0_ = (bitField0_ & ~0x00000002);
@@ -5969,6 +6031,10 @@ public final class HBaseProtos {
} else {
coprocessorsBuilder_.clear();
}
+ reportStartTime_ = 0L;
+ bitField0_ = (bitField0_ & ~0x00000040);
+ reportEndTime_ = 0L;
+ bitField0_ = (bitField0_ & ~0x00000080);
return this;
}
@@ -6010,7 +6076,7 @@ public final class HBaseProtos {
if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
to_bitField0_ |= 0x00000001;
}
- result.requestsPerSecond_ = requestsPerSecond_;
+ result.numberOfRequests_ = numberOfRequests_;
if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
to_bitField0_ |= 0x00000002;
}
@@ -6041,6 +6107,14 @@ public final class HBaseProtos {
} else {
result.coprocessors_ = coprocessorsBuilder_.build();
}
+ if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
+ to_bitField0_ |= 0x00000010;
+ }
+ result.reportStartTime_ = reportStartTime_;
+ if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+ to_bitField0_ |= 0x00000020;
+ }
+ result.reportEndTime_ = reportEndTime_;
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
@@ -6057,8 +6131,8 @@ public final class HBaseProtos {
public Builder mergeFrom(org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerLoad other) {
if (other == org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerLoad.getDefaultInstance()) return this;
- if (other.hasRequestsPerSecond()) {
- setRequestsPerSecond(other.getRequestsPerSecond());
+ if (other.hasNumberOfRequests()) {
+ setNumberOfRequests(other.getNumberOfRequests());
}
if (other.hasTotalNumberOfRequests()) {
setTotalNumberOfRequests(other.getTotalNumberOfRequests());
@@ -6121,6 +6195,12 @@ public final class HBaseProtos {
}
}
}
+ if (other.hasReportStartTime()) {
+ setReportStartTime(other.getReportStartTime());
+ }
+ if (other.hasReportEndTime()) {
+ setReportEndTime(other.getReportEndTime());
+ }
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
@@ -6166,7 +6246,7 @@ public final class HBaseProtos {
}
case 8: {
bitField0_ |= 0x00000001;
- requestsPerSecond_ = input.readUInt32();
+ numberOfRequests_ = input.readUInt32();
break;
}
case 16: {
@@ -6196,29 +6276,39 @@ public final class HBaseProtos {
addCoprocessors(subBuilder.buildPartial());
break;
}
+ case 56: {
+ bitField0_ |= 0x00000040;
+ reportStartTime_ = input.readUInt64();
+ break;
+ }
+ case 64: {
+ bitField0_ |= 0x00000080;
+ reportEndTime_ = input.readUInt64();
+ break;
+ }
}
}
}
private int bitField0_;
- // optional uint32 requestsPerSecond = 1;
- private int requestsPerSecond_ ;
- public boolean hasRequestsPerSecond() {
+ // optional uint32 numberOfRequests = 1;
+ private int numberOfRequests_ ;
+ public boolean hasNumberOfRequests() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
- public int getRequestsPerSecond() {
- return requestsPerSecond_;
+ public int getNumberOfRequests() {
+ return numberOfRequests_;
}
- public Builder setRequestsPerSecond(int value) {
+ public Builder setNumberOfRequests(int value) {
bitField0_ |= 0x00000001;
- requestsPerSecond_ = value;
+ numberOfRequests_ = value;
onChanged();
return this;
}
- public Builder clearRequestsPerSecond() {
+ public Builder clearNumberOfRequests() {
bitField0_ = (bitField0_ & ~0x00000001);
- requestsPerSecond_ = 0;
+ numberOfRequests_ = 0;
onChanged();
return this;
}
@@ -6658,6 +6748,48 @@ public final class HBaseProtos {
return coprocessorsBuilder_;
}
+ // optional uint64 reportStartTime = 7;
+ private long reportStartTime_ ;
+ public boolean hasReportStartTime() {
+ return ((bitField0_ & 0x00000040) == 0x00000040);
+ }
+ public long getReportStartTime() {
+ return reportStartTime_;
+ }
+ public Builder setReportStartTime(long value) {
+ bitField0_ |= 0x00000040;
+ reportStartTime_ = value;
+ onChanged();
+ return this;
+ }
+ public Builder clearReportStartTime() {
+ bitField0_ = (bitField0_ & ~0x00000040);
+ reportStartTime_ = 0L;
+ onChanged();
+ return this;
+ }
+
+ // optional uint64 reportEndTime = 8;
+ private long reportEndTime_ ;
+ public boolean hasReportEndTime() {
+ return ((bitField0_ & 0x00000080) == 0x00000080);
+ }
+ public long getReportEndTime() {
+ return reportEndTime_;
+ }
+ public Builder setReportEndTime(long value) {
+ bitField0_ |= 0x00000080;
+ reportEndTime_ = value;
+ onChanged();
+ return this;
+ }
+ public Builder clearReportEndTime() {
+ bitField0_ = (bitField0_ & ~0x00000080);
+ reportEndTime_ = 0L;
+ onChanged();
+ return this;
+ }
+
// @@protoc_insertion_point(builder_scope:ServerLoad)
}
@@ -9932,24 +10064,25 @@ public final class HBaseProtos {
"dKVs\030\013 \001(\004\022\027\n\017rootIndexSizeKB\030\014 \001(\r\022\036\n\026t" +
"otalStaticIndexSizeKB\030\r \001(\r\022\036\n\026totalStat" +
"icBloomSizeKB\030\016 \001(\r\022\"\n\014coprocessors\030\017 \003(" +
- "\0132\014.Coprocessor\"\263\001\n\nServerLoad\022\031\n\021reques" +
- "tsPerSecond\030\001 \001(\r\022\035\n\025totalNumberOfReques" +
- "ts\030\002 \001(\r\022\022\n\nusedHeapMB\030\003 \001(\r\022\021\n\tmaxHeapM" +
- "B\030\004 \001(\r\022 \n\013regionLoads\030\005 \003(\0132\013.RegionLoa" +
- "d\022\"\n\014coprocessors\030\006 \003(\0132\014.Coprocessor\"%\n",
- "\tTimeRange\022\014\n\004from\030\001 \001(\004\022\n\n\002to\030\002 \001(\004\"w\n\010" +
- "KeyValue\022\013\n\003row\030\001 \002(\014\022\016\n\006family\030\002 \002(\014\022\021\n" +
- "\tqualifier\030\003 \002(\014\022\021\n\ttimestamp\030\004 \001(\004\022\031\n\007k" +
- "eyType\030\005 \001(\0162\010.KeyType\022\r\n\005value\030\006 \001(\014\"?\n" +
- "\nServerName\022\020\n\010hostName\030\001 \002(\t\022\014\n\004port\030\002 " +
- "\001(\r\022\021\n\tstartCode\030\003 \001(\004\"\033\n\013Coprocessor\022\014\n" +
- "\004name\030\001 \002(\t\"-\n\016NameStringPair\022\014\n\004name\030\001 " +
- "\002(\t\022\r\n\005value\030\002 \002(\t\",\n\rNameBytesPair\022\014\n\004n" +
- "ame\030\001 \002(\t\022\r\n\005value\030\002 \001(\014*_\n\007KeyType\022\013\n\007M" +
- "INIMUM\020\000\022\007\n\003PUT\020\004\022\n\n\006DELETE\020\010\022\021\n\rDELETE_",
- "COLUMN\020\014\022\021\n\rDELETE_FAMILY\020\016\022\014\n\007MAXIMUM\020\377" +
- "\001B>\n*org.apache.hadoop.hbase.protobuf.ge" +
- "neratedB\013HBaseProtosH\001\240\001\001"
+ "\0132\014.Coprocessor\"\342\001\n\nServerLoad\022\030\n\020number" +
+ "OfRequests\030\001 \001(\r\022\035\n\025totalNumberOfRequest" +
+ "s\030\002 \001(\r\022\022\n\nusedHeapMB\030\003 \001(\r\022\021\n\tmaxHeapMB" +
+ "\030\004 \001(\r\022 \n\013regionLoads\030\005 \003(\0132\013.RegionLoad" +
+ "\022\"\n\014coprocessors\030\006 \003(\0132\014.Coprocessor\022\027\n\017",
+ "reportStartTime\030\007 \001(\004\022\025\n\rreportEndTime\030\010" +
+ " \001(\004\"%\n\tTimeRange\022\014\n\004from\030\001 \001(\004\022\n\n\002to\030\002 " +
+ "\001(\004\"w\n\010KeyValue\022\013\n\003row\030\001 \002(\014\022\016\n\006family\030\002" +
+ " \002(\014\022\021\n\tqualifier\030\003 \002(\014\022\021\n\ttimestamp\030\004 \001" +
+ "(\004\022\031\n\007keyType\030\005 \001(\0162\010.KeyType\022\r\n\005value\030\006" +
+ " \001(\014\"?\n\nServerName\022\020\n\010hostName\030\001 \002(\t\022\014\n\004" +
+ "port\030\002 \001(\r\022\021\n\tstartCode\030\003 \001(\004\"\033\n\013Coproce" +
+ "ssor\022\014\n\004name\030\001 \002(\t\"-\n\016NameStringPair\022\014\n\004" +
+ "name\030\001 \002(\t\022\r\n\005value\030\002 \002(\t\",\n\rNameBytesPa" +
+ "ir\022\014\n\004name\030\001 \002(\t\022\r\n\005value\030\002 \001(\014*_\n\007KeyTy",
+ "pe\022\013\n\007MINIMUM\020\000\022\007\n\003PUT\020\004\022\n\n\006DELETE\020\010\022\021\n\r" +
+ "DELETE_COLUMN\020\014\022\021\n\rDELETE_FAMILY\020\016\022\014\n\007MA" +
+ "XIMUM\020\377\001B>\n*org.apache.hadoop.hbase.prot" +
+ "obuf.generatedB\013HBaseProtosH\001\240\001\001"
};
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -10017,7 +10150,7 @@ public final class HBaseProtos {
internal_static_ServerLoad_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_ServerLoad_descriptor,
- new java.lang.String[] { "RequestsPerSecond", "TotalNumberOfRequests", "UsedHeapMB", "MaxHeapMB", "RegionLoads", "Coprocessors", },
+ new java.lang.String[] { "NumberOfRequests", "TotalNumberOfRequests", "UsedHeapMB", "MaxHeapMB", "RegionLoads", "Coprocessors", "ReportStartTime", "ReportEndTime", },
org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerLoad.class,
org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.ServerLoad.Builder.class);
internal_static_TimeRange_descriptor =
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Mon Jun 25 20:58:05 2012
@@ -781,7 +781,7 @@ public class HRegionServer implements C
long now = System.currentTimeMillis();
if ((now - lastMsg) >= msgInterval) {
doMetrics();
- tryRegionServerReport();
+ tryRegionServerReport(lastMsg, now);
lastMsg = System.currentTimeMillis();
}
if (!this.stopped) this.sleeper.sleep();
@@ -887,9 +887,9 @@ public class HRegionServer implements C
return allUserRegionsOffline;
}
- void tryRegionServerReport()
+ void tryRegionServerReport(long reportStartTime, long reportEndTime)
throws IOException {
- HBaseProtos.ServerLoad sl = buildServerLoad();
+ HBaseProtos.ServerLoad sl = buildServerLoad(reportStartTime, reportEndTime);
// Why we do this?
this.requestCount.set(0);
try {
@@ -911,13 +911,13 @@ public class HRegionServer implements C
}
}
- HBaseProtos.ServerLoad buildServerLoad() {
+ HBaseProtos.ServerLoad buildServerLoad(long reportStartTime, long reportEndTime) {
Collection<HRegion> regions = getOnlineRegionsLocalContext();
MemoryUsage memory =
ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
HBaseProtos.ServerLoad.Builder serverLoad = HBaseProtos.ServerLoad.newBuilder();
- serverLoad.setRequestsPerSecond((int)metrics.getRequests());
+ serverLoad.setNumberOfRequests((int)metrics.getRequests());
serverLoad.setTotalNumberOfRequests(requestCount.get());
serverLoad.setUsedHeapMB((int)(memory.getUsed() / 1024 / 1024));
serverLoad.setMaxHeapMB((int) (memory.getMax() / 1024 / 1024));
@@ -929,6 +929,8 @@ public class HRegionServer implements C
for (HRegion region : regions) {
serverLoad.addRegionLoads(createRegionLoad(region));
}
+ serverLoad.setReportStartTime(reportStartTime);
+ serverLoad.setReportEndTime(reportEndTime);
return serverLoad.build();
}
@@ -2313,9 +2315,10 @@ public class HRegionServer implements C
// used by org/apache/hbase/tmpl/regionserver/RSStatusTmpl.jamon (HBASE-4070).
public String[] getCoprocessors() {
- HBaseProtos.ServerLoad sl = buildServerLoad();
+ // passing fake times to buildServerLoad is okay, because we only care about the coprocessor part.
+ HBaseProtos.ServerLoad sl = buildServerLoad(0, 0);
return sl == null? null:
- ServerLoad.getRegionServerCoprocessors(new ServerLoad(sl));
+ new ServerLoad(sl).getRegionServerCoprocessors();
}
/**
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterStatusResource.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterStatusResource.java?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterStatusResource.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterStatusResource.java Mon Jun 25 20:58:05 2012
@@ -36,7 +36,8 @@ import org.apache.commons.logging.LogFac
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.hbase.ClusterStatus;
-import org.apache.hadoop.hbase.HServerLoad;
+import org.apache.hadoop.hbase.ServerLoad;
+import org.apache.hadoop.hbase.RegionLoad;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.rest.model.StorageClusterStatusModel;
@@ -76,7 +77,7 @@ public class StorageClusterStatusResourc
model.setRequests(status.getRequestsCount());
model.setAverageLoad(status.getAverageLoad());
for (ServerName info: status.getServers()) {
- HServerLoad load = status.getLoad(info);
+ ServerLoad load = status.getLoad(info);
StorageClusterStatusModel.Node node =
model.addLiveNode(
info.getHostname() + ":" +
@@ -84,7 +85,7 @@ public class StorageClusterStatusResourc
info.getStartcode(), load.getUsedHeapMB(),
load.getMaxHeapMB());
node.setRequests(load.getNumberOfRequests());
- for (HServerLoad.RegionLoad region: load.getRegionsLoad().values()) {
+ for (RegionLoad region: load.getRegionsLoad().values()) {
node.addRegion(region.getName(), region.getStores(),
region.getStorefiles(), region.getStorefileSizeMB(),
region.getMemStoreSizeMB(), region.getStorefileIndexSizeMB(),
Modified: hbase/trunk/hbase-server/src/main/protobuf/hbase.proto
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/protobuf/hbase.proto?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/protobuf/hbase.proto (original)
+++ hbase/trunk/hbase-server/src/main/protobuf/hbase.proto Mon Jun 25 20:58:05 2012
@@ -137,8 +137,8 @@ message RegionLoad {
/* Server-level protobufs */
message ServerLoad {
- /** Number of requests per second since last report. */
- optional uint32 requestsPerSecond = 1;
+ /** Number of requests since last report. */
+ optional uint32 numberOfRequests = 1;
/** Total Number of requests from the start of the region server. */
optional uint32 totalNumberOfRequests = 2;
@@ -158,6 +158,20 @@ message ServerLoad {
* objects.
*/
repeated Coprocessor coprocessors = 6;
+
+ /**
+ * Time when incremental (non-total) counts began being calculated (e.g. numberOfRequests)
+ * time is measured as the difference, measured in milliseconds, between the current time
+ * and midnight, January 1, 1970 UTC.
+ */
+ optional uint64 reportStartTime = 7;
+
+ /**
+ * Time when report was generated.
+ * time is measured as the difference, measured in milliseconds, between the current time
+ * and midnight, January 1, 1970 UTC.
+ */
+ optional uint64 reportEndTime = 8;
}
/**
Modified: hbase/trunk/hbase-server/src/main/resources/hbase-webapps/master/table.jsp
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/resources/hbase-webapps/master/table.jsp?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/resources/hbase-webapps/master/table.jsp (original)
+++ hbase/trunk/hbase-server/src/main/resources/hbase-webapps/master/table.jsp Mon Jun 25 20:58:05 2012
@@ -26,7 +26,7 @@
import="org.apache.hadoop.hbase.HRegionInfo"
import="org.apache.hadoop.hbase.ServerName"
import="org.apache.hadoop.hbase.ServerLoad"
- import="org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionLoad"
+ import="org.apache.hadoop.hbase.RegionLoad"
import="org.apache.hadoop.hbase.master.HMaster"
import="org.apache.hadoop.hbase.util.Bytes"
import="org.apache.hadoop.hbase.util.FSUtils"
@@ -269,13 +269,9 @@
if (addr != null) {
ServerLoad sl = master.getServerManager().getLoad(addr);
if (sl != null) {
- List<RegionLoad> list = sl.getRegionLoadsList();
- byte [] regionName = regionInfo.getRegionName();
- for (RegionLoad rgLoad : list) {
- if (rgLoad.getRegionSpecifier().getValue().toByteArray().equals(regionName)) {
- req = ProtobufUtil.getTotalRequestsCount(rgLoad);
- break;
- }
+ Map<byte[], RegionLoad> map = sl.getRegionsLoad();
+ if (map.containsKey(regionInfo.getRegionName())) {
+ req = map.get(regionInfo.getRegionName()).getRequestsCount();
}
// This port might be wrong if RS actually ended up using something else.
urlRegionServer =
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/TestSerialization.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/TestSerialization.java?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/TestSerialization.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/TestSerialization.java Mon Jun 25 20:58:05 2012
@@ -66,18 +66,6 @@ public class TestSerialization {
assertTrue(slt.equals(sltDeserialized));
}
- @Test
- public void testHServerLoadVersioning() throws IOException {
- Set<String> cps = new HashSet<String>(0);
- Map<byte [], RegionLoad> regions = new TreeMap<byte [], RegionLoad>(Bytes.BYTES_COMPARATOR);
- regions.put(HConstants.META_TABLE_NAME,
- new HServerLoad092.RegionLoad(HConstants.META_TABLE_NAME, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, cps));
- HServerLoad092 hsl092 = new HServerLoad092(0, 0, 0, 0, regions, cps);
- byte [] hsl092bytes = Writables.getBytes(hsl092);
- Writables.getWritable(hsl092bytes, new HServerLoad());
- // TO BE CONTINUED
- }
-
@Test public void testCompareFilter() throws Exception {
Filter f = new RowFilter(CompareOp.EQUAL,
new BinaryComparator(Bytes.toBytes("testRowOne-2")));
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/TestServerLoad.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/TestServerLoad.java?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/TestServerLoad.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/TestServerLoad.java Mon Jun 25 20:58:05 2012
@@ -38,8 +38,8 @@ public class TestServerLoad {
assertEquals(114, sl.getStorefiles());
assertEquals(129, sl.getStoreUncompressedSizeMB());
assertEquals(504, sl.getRootIndexSizeKB());
- assertEquals(820, sl.getStorefileSizeMB());
- assertEquals(82, sl.getStorefileIndexSizeMB());
+ assertEquals(820, sl.getStorefileSizeInMB());
+ assertEquals(82, sl.getStorefileIndexSizeInMB());
assertEquals(0, sl.getReadRequestsCount());
}
@@ -80,4 +80,4 @@ public class TestServerLoad {
return sl;
}
-}
\ No newline at end of file
+}
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestClassLoading.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestClassLoading.java?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestClassLoading.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestClassLoading.java Mon Jun 25 20:58:05 2012
@@ -31,7 +31,7 @@ import org.apache.hadoop.hdfs.MiniDFSClu
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.ServerLoad;
-import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionLoad;
+import org.apache.hadoop.hbase.RegionLoad;
import javax.tools.*;
import java.io.*;
@@ -571,9 +571,10 @@ public class TestClassLoading {
for(Map.Entry<ServerName,ServerLoad> server:
TEST_UTIL.getMiniHBaseCluster().getMaster().getServerManager().
getOnlineServers().entrySet()) {
- for (RegionLoad region : server.getValue().getRegionLoadsList()) {
- if (Bytes.toString(region.getRegionSpecifier().getValue().toByteArray()).equals(tableName)) {
- // this server server hosts a region of tableName: add this server..
+ for( Map.Entry<byte[], RegionLoad> region:
+ server.getValue().getRegionsLoad().entrySet()) {
+ if (region.getValue().getNameAsString().equals(tableName)) {
+ // this server hosts a region of tableName: add this server..
serverLoadHashMap.put(server.getKey(),server.getValue());
// .. and skip the rest of the regions that it hosts.
break;
@@ -599,8 +600,7 @@ public class TestClassLoading {
}
boolean any_failed = false;
for(Map.Entry<ServerName,ServerLoad> server: servers.entrySet()) {
- actualCoprocessors =
- ServerLoad.getAllCoprocessors(server.getValue());
+ actualCoprocessors = server.getValue().getAllCoprocessors();
if (!Arrays.equals(actualCoprocessors, expectedCoprocessors)) {
LOG.debug("failed comparison: actual: " +
Arrays.toString(actualCoprocessors) +
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHbaseObjectWritable.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHbaseObjectWritable.java?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHbaseObjectWritable.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHbaseObjectWritable.java Mon Jun 25 20:58:05 2012
@@ -42,7 +42,6 @@ import org.apache.hadoop.hbase.HConstant
import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.HServerAddress;
import org.apache.hadoop.hbase.HServerInfo;
-import org.apache.hadoop.hbase.HServerLoad;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.SmallTests;
@@ -524,7 +523,6 @@ public class TestHbaseObjectWritable ext
assertEquals(72,HbaseObjectWritable.getClassCode(RandomRowFilter.class).intValue());
assertEquals(73,HbaseObjectWritable.getClassCode(CompareOp.class).intValue());
assertEquals(74,HbaseObjectWritable.getClassCode(ColumnRangeFilter.class).intValue());
- assertEquals(75,HbaseObjectWritable.getClassCode(HServerLoad.class).intValue());
assertEquals(76,HbaseObjectWritable.getClassCode(RegionOpeningState.class).intValue());
assertEquals(77,HbaseObjectWritable.getClassCode(HTableDescriptor[].class).intValue());
assertEquals(78,HbaseObjectWritable.getClassCode(Append.class).intValue());
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterNoCluster.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterNoCluster.java?rev=1353740&r1=1353739&r2=1353740&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterNoCluster.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterNoCluster.java Mon Jun 25 20:58:05 2012
@@ -31,7 +31,6 @@ import org.apache.hadoop.hbase.Deseriali
import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HRegionInfo;
-import org.apache.hadoop.hbase.HServerLoad;
import org.apache.hadoop.hbase.ServerLoad;
import org.apache.hadoop.hbase.Server;
import org.apache.hadoop.hbase.ServerName;