Repository: hbase Updated Branches: refs/heads/branch-1 9b03c1424 -> cad3d5589
HBASE-18520 Add jmx value to determine true Master Start time This is to determine how long it took in total for the master to start and finish initializing. Signed-off-by: tedyu <yuzhih...@gmail.com> Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/cad3d558 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/cad3d558 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/cad3d558 Branch: refs/heads/branch-1 Commit: cad3d558921511b1d78f68eb48ad57db5aec8460 Parents: 9b03c14 Author: Zach York <zy...@amazon.com> Authored: Thu Jun 15 17:10:07 2017 -0700 Committer: tedyu <yuzhih...@gmail.com> Committed: Sat Aug 5 22:34:26 2017 -0700 ---------------------------------------------------------------------- .../apache/hadoop/hbase/master/MetricsMasterSource.java | 2 ++ .../apache/hadoop/hbase/master/MetricsMasterWrapper.java | 5 +++++ .../hadoop/hbase/master/MetricsMasterSourceImpl.java | 2 ++ .../java/org/apache/hadoop/hbase/master/HMaster.java | 11 +++++++++++ .../hadoop/hbase/master/MetricsMasterWrapperImpl.java | 5 +++++ .../apache/hadoop/hbase/regionserver/HRegionServer.java | 2 +- 6 files changed, 26 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/cad3d558/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 290b8f5..eb00991 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 @@ -48,6 +48,7 @@ public interface MetricsMasterSource extends BaseSource { // Strings used for exporting to metrics system. String MASTER_ACTIVE_TIME_NAME = "masterActiveTime"; String MASTER_START_TIME_NAME = "masterStartTime"; + String MASTER_FINISHED_INITIALIZATION_TIME_NAME = "masterFinishedInitializationTime"; String AVERAGE_LOAD_NAME = "averageLoad"; String LIVE_REGION_SERVERS_NAME = "liveRegionServers"; String DEAD_REGION_SERVERS_NAME = "deadRegionServers"; @@ -63,6 +64,7 @@ public interface MetricsMasterSource extends BaseSource { String CLUSTER_REQUESTS_NAME = "clusterRequests"; String MASTER_ACTIVE_TIME_DESC = "Master Active Time"; String MASTER_START_TIME_DESC = "Master Start Time"; + String MASTER_FINISHED_INITIALIZATION_TIME_DESC = "Timestamp when Master has finished initializing"; String AVERAGE_LOAD_DESC = "AverageLoad"; String LIVE_REGION_SERVERS_DESC = "Names of live RegionServers"; String NUMBER_OF_REGION_SERVERS_DESC = "Number of RegionServers"; http://git-wip-us.apache.org/repos/asf/hbase/blob/cad3d558/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 5e67f83..812cad9 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 @@ -121,4 +121,9 @@ public interface MetricsMasterWrapper { * Get the number of region merge plans executed. */ long getMergePlanCount(); + + /** + * Get the time in Millis when the master finished initializing/becoming the active master + */ + long getMasterInitializationTime(); } http://git-wip-us.apache.org/repos/asf/hbase/blob/cad3d558/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 fc859e5..9e5c0d5 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 @@ -82,6 +82,8 @@ public class MetricsMasterSourceImpl MASTER_ACTIVE_TIME_DESC), masterWrapper.getActiveTime()) .addGauge(Interns.info(MASTER_START_TIME_NAME, MASTER_START_TIME_DESC), masterWrapper.getStartTime()) + .addGauge(Interns.info(MASTER_FINISHED_INITIALIZATION_TIME_NAME, MASTER_FINISHED_INITIALIZATION_TIME_DESC), + masterWrapper.getMasterInitializationTime()) .addGauge(Interns.info(AVERAGE_LOAD_NAME, AVERAGE_LOAD_DESC), masterWrapper.getAverageLoad()) .tag(Interns.info(LIVE_REGION_SERVERS_NAME, LIVE_REGION_SERVERS_DESC), http://git-wip-us.apache.org/repos/asf/hbase/blob/cad3d558/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 98a3dfb..950ea4a 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 @@ -345,6 +345,9 @@ public class HMaster extends HRegionServer implements MasterServices, Server { // Time stamps for when a hmaster became active private long masterActiveTime; + // Time stamp for when HMaster finishes becoming Active Master + private long masterFinishedInitializationTime; + //should we check the compression codec type at master side, default true, HBASE-6370 private final boolean masterCheckCompression; @@ -892,6 +895,7 @@ public class HMaster extends HRegionServer implements MasterServices, Server { status.markComplete("Initialization successful"); LOG.info("Master has completed initialization"); + this.masterFinishedInitializationTime = System.currentTimeMillis(); configurationManager.registerObserver(this.balancer); // Set master as 'initialized'. @@ -2534,6 +2538,13 @@ public class HMaster extends HRegionServer implements MasterServices, Server { return masterActiveTime; } + /** + * @return timestamp in millis when HMaster finished becoming the active master + */ + public long getMasterFinishedInitializationTime() { + return masterFinishedInitializationTime; + } + public int getNumWALFiles() { return procedureStore != null ? procedureStore.getActiveLogs().size() : 0; } http://git-wip-us.apache.org/repos/asf/hbase/blob/cad3d558/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 4cff28b..1c06b2e 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 @@ -50,6 +50,11 @@ public class MetricsMasterWrapperImpl implements MetricsMasterWrapper { } @Override + public long getMasterInitializationTime() { + return master.getMasterFinishedInitializationTime(); + } + + @Override public String getClusterId() { return master.getClusterId(); } http://git-wip-us.apache.org/repos/asf/hbase/blob/cad3d558/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 107e1c3..32bab6b 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -519,6 +519,7 @@ public class HRegionServer extends HasThread implements public HRegionServer(Configuration conf, CoordinatedStateManager csm) throws IOException, InterruptedException { super("RegionServer"); // thread name + this.startcode = System.currentTimeMillis(); this.fsOk = true; this.conf = conf; checkCodecs(this.conf); @@ -556,7 +557,6 @@ public class HRegionServer extends HasThread implements this.stopped = false; rpcServices = createRpcServices(); - this.startcode = System.currentTimeMillis(); if (this instanceof HMaster) { useThisHostnameInstead = conf.get(MASTER_HOSTNAME_KEY); } else {