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());