Repository: hbase
Updated Branches:
  refs/heads/branch-1 53983f5b2 -> e7d935cbe


HBASE-15068 Add metrics for region normalization plans


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/e7d935cb
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/e7d935cb
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/e7d935cb

Branch: refs/heads/branch-1
Commit: e7d935cbed7287aac9dc6aa7c7ed113eccdda0b8
Parents: 53983f5
Author: tedyu <yuzhih...@gmail.com>
Authored: Thu Jan 7 03:28:50 2016 -0800
Committer: tedyu <yuzhih...@gmail.com>
Committed: Thu Jan 7 03:28:50 2016 -0800

----------------------------------------------------------------------
 .../hbase/master/MetricsMasterSource.java       |  5 +++-
 .../hbase/master/MetricsMasterWrapper.java      |  9 +++++++
 .../hbase/master/MetricsMasterSourceImpl.java   |  4 +++
 .../org/apache/hadoop/hbase/master/HMaster.java | 26 +++++++++++++++++++-
 .../hbase/master/MetricsMasterWrapperImpl.java  | 10 ++++++++
 .../hbase/master/TestMasterMetricsWrapper.java  |  2 ++
 6 files changed, 54 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/e7d935cb/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSource.java
----------------------------------------------------------------------
diff --git 
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSource.java
 
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSource.java
index ab621cc..290b8f5 100644
--- 
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSource.java
+++ 
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSource.java
@@ -57,6 +57,8 @@ public interface MetricsMasterSource extends BaseSource {
   String SERVER_NAME_NAME = "serverName";
   String CLUSTER_ID_NAME = "clusterId";
   String IS_ACTIVE_MASTER_NAME = "isActiveMaster";
+  String SPLIT_PLAN_COUNT_NAME = "splitPlanCount";
+  String MERGE_PLAN_COUNT_NAME = "mergePlanCount";
 
   String CLUSTER_REQUESTS_NAME = "clusterRequests";
   String MASTER_ACTIVE_TIME_DESC = "Master Active Time";
@@ -70,7 +72,8 @@ public interface MetricsMasterSource extends BaseSource {
   String SERVER_NAME_DESC = "Server Name";
   String CLUSTER_ID_DESC = "Cluster Id";
   String IS_ACTIVE_MASTER_DESC = "Is Active Master";
-
+  String SPLIT_PLAN_COUNT_DESC = "Number of Region Split Plans executed";
+  String MERGE_PLAN_COUNT_DESC = "Number of Region Merge Plans executed";
 
 
   /**

http://git-wip-us.apache.org/repos/asf/hbase/blob/e7d935cb/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapper.java
----------------------------------------------------------------------
diff --git 
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapper.java
 
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapper.java
index 678db69..5e67f83 100644
--- 
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapper.java
+++ 
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapper.java
@@ -112,4 +112,13 @@ public interface MetricsMasterWrapper {
    */
   long getNumWALFiles();
 
+  /**
+   * Get the number of region split plans executed.
+   */
+  long getSplitPlanCount();
+
+  /**
+   * Get the number of region merge plans executed.
+   */
+  long getMergePlanCount();
 }

http://git-wip-us.apache.org/repos/asf/hbase/blob/e7d935cb/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java
----------------------------------------------------------------------
diff --git 
a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java
 
b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java
index c5ce5e4..b0ba66e 100644
--- 
a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java
+++ 
b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java
@@ -74,6 +74,10 @@ public class MetricsMasterSourceImpl
     // masterWrapper can be null because this function is called inside of 
init.
     if (masterWrapper != null) {
       metricsRecordBuilder
+          .addGauge(Interns.info(MERGE_PLAN_COUNT_NAME, MERGE_PLAN_COUNT_DESC),
+              masterWrapper.getMergePlanCount())
+          .addGauge(Interns.info(SPLIT_PLAN_COUNT_NAME, SPLIT_PLAN_COUNT_DESC),
+              masterWrapper.getSplitPlanCount())
           .addGauge(Interns.info(MASTER_ACTIVE_TIME_NAME,
               MASTER_ACTIVE_TIME_DESC), masterWrapper.getActiveTime())
           .addGauge(Interns.info(MASTER_START_TIME_NAME,

http://git-wip-us.apache.org/repos/asf/hbase/blob/e7d935cb/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
index 4d554a6..abd477c 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
@@ -116,6 +116,7 @@ import 
org.apache.hadoop.hbase.master.snapshot.SnapshotManager;
 import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;
 import org.apache.hadoop.hbase.monitoring.MonitoredTask;
 import org.apache.hadoop.hbase.monitoring.TaskMonitor;
+import org.apache.hadoop.hbase.normalizer.NormalizationPlan;
 import org.apache.hadoop.hbase.normalizer.NormalizationPlan.PlanType;
 import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;
 import 
org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;
@@ -325,6 +326,9 @@ public class HMaster extends HRegionServer implements 
MasterServices, Server {
   private ProcedureExecutor<MasterProcedureEnv> procedureExecutor;
   private WALProcedureStore procedureStore;
 
+  private long splitPlanCount;
+  private long mergePlanCount;
+
   /** flag used in test cases in order to simulate RS failures during master 
initialization */
   private volatile boolean initializationBeforeMetaAssignment = false;
 
@@ -1370,7 +1374,13 @@ public class HMaster extends HRegionServer implements 
MasterServices, Server {
             continue;
           }
         }
-        this.normalizer.computePlanForTable(table, 
types).execute(clusterConnection.getAdmin());
+       NormalizationPlan plan = this.normalizer.computePlanForTable(table, 
types);
+        plan.execute(clusterConnection.getAdmin());
+        if (plan.getType() == PlanType.SPLIT) {
+          splitPlanCount++;
+        } else if (plan.getType() == PlanType.MERGE) {
+          mergePlanCount++;
+        }
       }
     }
     // If Region did not generate any plans, it means the cluster is already 
balanced.
@@ -2369,6 +2379,20 @@ public class HMaster extends HRegionServer implements 
MasterServices, Server {
     }
     return regionStates.getAverageLoad();
   }
+  
+  /*
+   * @return the count of region split plans executed
+   */
+  public long getSplitPlanCount() {
+    return splitPlanCount;
+  }
+
+  /*
+   * @return the count of region merge plans executed
+   */
+  public long getMergePlanCount() {
+    return mergePlanCount;
+  }
 
   @Override
   public boolean registerService(Service instance) {

http://git-wip-us.apache.org/repos/asf/hbase/blob/e7d935cb/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.java
index a935a37..4cff28b 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.java
@@ -40,6 +40,16 @@ public class MetricsMasterWrapperImpl implements 
MetricsMasterWrapper {
   }
 
   @Override
+  public long getSplitPlanCount() {
+    return master.getSplitPlanCount();
+  }
+
+  @Override
+  public long getMergePlanCount() {
+    return master.getMergePlanCount();
+  }
+
+  @Override
   public String getClusterId() {
     return master.getClusterId();
   }

http://git-wip-us.apache.org/repos/asf/hbase/blob/e7d935cb/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.java
index 00753f2..38b7d43 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.java
@@ -49,6 +49,8 @@ public class TestMasterMetricsWrapper {
   public void testInfo() {
     HMaster master = TEST_UTIL.getHBaseCluster().getMaster();
     MetricsMasterWrapperImpl info = new MetricsMasterWrapperImpl(master);
+    assertEquals(master.getSplitPlanCount(), info.getSplitPlanCount(), 0);
+    assertEquals(master.getMergePlanCount(), info.getMergePlanCount(), 0);
     assertEquals(master.getAverageLoad(), info.getAverageLoad(), 0);
     assertEquals(master.getClusterId(), info.getClusterId());
     assertEquals(master.getMasterActiveTime(), info.getActiveTime());

Reply via email to