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 2011/03/21 23:13:39 UTC

svn commit: r1083992 - in /hbase/trunk: ./ src/main/java/org/apache/hadoop/hbase/ src/main/java/org/apache/hadoop/hbase/avro/ src/main/java/org/apache/hadoop/hbase/master/ src/main/java/org/apache/hadoop/hbase/rest/

Author: stack
Date: Mon Mar 21 22:13:38 2011
New Revision: 1083992

URL: http://svn.apache.org/viewvc?rev=1083992&view=rev
Log:
HBASE-3676 Update region server load for AssignmentManager through regionServerReport()

Modified:
    hbase/trunk/CHANGES.txt
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/HServerLoad.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/avro/AvroUtil.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterStatusResource.java

Modified: hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=1083992&r1=1083991&r2=1083992&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Mon Mar 21 22:13:38 2011
@@ -84,6 +84,8 @@ Release 0.91.0 - Unreleased
    HBASE-3657  reduce copying of HRegionInfo's (Ted Yu via Stack)
    HBASE-3422  Balancer will try to rebalance thousands of regions in one go;
                needs an upper bound added (Ted Yu via Stack)
+   HBASE-3676  Update region server load for AssignmentManager through
+               regionServerReport() (Ted Yu via Stack)
 
   TASK
    HBASE-3559  Move report of split to master OFF the heartbeat channel

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/HServerLoad.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/HServerLoad.java?rev=1083992&r1=1083991&r2=1083992&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/HServerLoad.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/HServerLoad.java Mon Mar 21 22:13:38 2011
@@ -22,9 +22,9 @@ package org.apache.hadoop.hbase;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Collections;
+import java.util.Map;
+import java.util.TreeMap;
 
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.Strings;
@@ -47,7 +47,7 @@ public class HServerLoad implements Writ
   /** the maximum allowable size of the heap, in MB */
   private int maxHeapMB;
   /** per-region load metrics */
-  private ArrayList<RegionLoad> regionLoad = new ArrayList<RegionLoad>();
+  private Map<byte[], RegionLoad> regionLoad = new TreeMap<byte[], RegionLoad>(Bytes.BYTES_COMPARATOR);
 
   /**
    * Encapsulates per-region loading metrics.
@@ -86,8 +86,7 @@ public class HServerLoad implements Writ
      */
     public RegionLoad(final byte[] name, final int stores,
         final int storefiles, final int storefileSizeMB,
-        final int memstoreSizeMB, final int storefileIndexSizeMB,
-        final long requestsCount) {
+        final int memstoreSizeMB, final int storefileIndexSizeMB,final long requestsCount) {
       this.name = name;
       this.stores = stores;
       this.storefiles = storefiles;
@@ -282,7 +281,9 @@ public class HServerLoad implements Writ
    */
   public HServerLoad(final HServerLoad hsl) {
     this(hsl.numberOfRequests, hsl.usedHeapMB, hsl.maxHeapMB);
-    this.regionLoad.addAll(hsl.regionLoad);
+    for (Map.Entry<byte[], RegionLoad> e : hsl.regionLoad.entrySet()) {
+      this.regionLoad.put(e.getKey(), e.getValue());
+    }
   }
 
   /**
@@ -387,8 +388,8 @@ public class HServerLoad implements Writ
   /**
    * @return region load metrics
    */
-  public Collection<RegionLoad> getRegionsLoad() {
-    return Collections.unmodifiableCollection(regionLoad);
+  public Map<byte[], RegionLoad> getRegionsLoad() {
+    return Collections.unmodifiableMap(regionLoad);
   }
 
   /**
@@ -396,7 +397,7 @@ public class HServerLoad implements Writ
    */
   public int getStorefiles() {
     int count = 0;
-    for (RegionLoad info: regionLoad)
+    for (RegionLoad info: regionLoad.values())
     	count += info.getStorefiles();
     return count;
   }
@@ -406,7 +407,7 @@ public class HServerLoad implements Writ
    */
   public int getStorefileSizeInMB() {
     int count = 0;
-    for (RegionLoad info: regionLoad)
+    for (RegionLoad info: regionLoad.values())
       count += info.getStorefileSizeMB();
     return count;
   }
@@ -416,7 +417,7 @@ public class HServerLoad implements Writ
    */
   public int getMemStoreSizeInMB() {
     int count = 0;
-    for (RegionLoad info: regionLoad)
+    for (RegionLoad info: regionLoad.values())
     	count += info.getMemStoreSizeMB();
     return count;
   }
@@ -426,7 +427,7 @@ public class HServerLoad implements Writ
    */
   public int getStorefileIndexSizeInMB() {
     int count = 0;
-    for (RegionLoad info: regionLoad)
+    for (RegionLoad info: regionLoad.values())
     	count += info.getStorefileIndexSizeMB();
     return count;
   }
@@ -466,7 +467,7 @@ public class HServerLoad implements Writ
    */
   public void addRegionInfo(final HServerLoad.RegionLoad load) {
     this.numberOfRegions++;
-    this.regionLoad.add(load);
+    this.regionLoad.put(load.getName(), load);
   }
 
   /**
@@ -483,7 +484,7 @@ public class HServerLoad implements Writ
       final int storefiles, final int storefileSizeMB,
       final int memstoreSizeMB, final int storefileIndexSizeMB,
       final long requestsCount) {
-    this.regionLoad.add(new HServerLoad.RegionLoad(name, stores, storefiles,
+    this.regionLoad.put(name, new HServerLoad.RegionLoad(name, stores, storefiles,
       storefileSizeMB, memstoreSizeMB, storefileIndexSizeMB, requestsCount));
   }
 
@@ -497,7 +498,7 @@ public class HServerLoad implements Writ
     for (int i = 0; i < numberOfRegions; i++) {
       RegionLoad rl = new RegionLoad();
       rl.readFields(in);
-      regionLoad.add(rl);
+      regionLoad.put(rl.getName(), rl);
     }
   }
 
@@ -506,8 +507,8 @@ public class HServerLoad implements Writ
     out.writeInt(usedHeapMB);
     out.writeInt(maxHeapMB);
     out.writeInt(numberOfRegions);
-    for (int i = 0; i < numberOfRegions; i++)
-      regionLoad.get(i).write(out);
+    for (RegionLoad rl: regionLoad.values())
+      rl.write(out);
   }
 
   // Comparable

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/avro/AvroUtil.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/avro/AvroUtil.java?rev=1083992&r1=1083991&r2=1083992&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/avro/AvroUtil.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/avro/AvroUtil.java Mon Mar 21 22:13:38 2011
@@ -93,7 +93,7 @@ public class AvroUtil {
     asl.numberOfRegions = hsl.getNumberOfRegions();
     asl.numberOfRequests = hsl.getNumberOfRequests();
 
-    Collection<HServerLoad.RegionLoad> regionLoads = hsl.getRegionsLoad();
+    Collection<HServerLoad.RegionLoad> regionLoads = hsl.getRegionsLoad().values();
     Schema s = Schema.createArray(ARegionLoad.SCHEMA$);
     GenericData.Array<ARegionLoad> aregionLoads = null;
     if (regionLoads != null) {

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java?rev=1083992&r1=1083991&r2=1083992&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java Mon Mar 21 22:13:38 2011
@@ -326,6 +326,18 @@ public class ServerManager {
     // No more piggyback messages on heartbeats for other stuff
     return msgs;
   }
+  
+  /**
+   *  Make server load accessible to AssignmentManager
+   * @param serverName
+   * @return
+   * @throws HServerLoad if serverName is known
+   */
+  HServerLoad getLoad(String serverName) {
+    HServerInfo hsi = this.onlineServers.get(serverName);
+    if (hsi == null) return null;
+    return hsi.getLoad();
+  }
 
   /**
    * @param serverName

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterStatusResource.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterStatusResource.java?rev=1083992&r1=1083991&r2=1083992&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterStatusResource.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterStatusResource.java Mon Mar 21 22:13:38 2011
@@ -82,7 +82,7 @@ public class StorageClusterStatusResourc
             info.getStartCode(), load.getUsedHeapMB(),
             load.getMaxHeapMB());
         node.setRequests(load.getNumberOfRequests());
-        for (HServerLoad.RegionLoad region: load.getRegionsLoad()) {
+        for (HServerLoad.RegionLoad region: load.getRegionsLoad().values()) {
           node.addRegion(region.getName(), region.getStores(),
             region.getStorefiles(), region.getStorefileSizeMB(),
             region.getMemStoreSizeMB(), region.getStorefileIndexSizeMB());