You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ec...@apache.org on 2013/08/16 00:04:25 UTC
svn commit: r1514513 [2/2] - in /hbase/trunk:
hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/
hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/balancer/
hbase-hadoop1-compat/src/main/java/org/apache/hadoop/hbase/master...
Added: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsSnapshot.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsSnapshot.java?rev=1514513&view=auto
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsSnapshot.java (added)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsSnapshot.java Thu Aug 15 22:04:24 2013
@@ -0,0 +1,54 @@
+/**
+ * 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.master;
+
+import org.apache.hadoop.hbase.CompatibilitySingletonFactory;
+
+public class MetricsSnapshot {
+
+ private final MetricsSnapshotSource source;
+
+ public MetricsSnapshot() {
+ source = CompatibilitySingletonFactory.getInstance(MetricsSnapshotSource.class);
+ }
+
+ /**
+ * Record a single instance of a snapshot
+ * @param time time that the snapshot took
+ */
+ public void addSnapshot(long time) {
+ source.updateSnapshotTime(time);
+ }
+
+ /**
+ * Record a single instance of a snapshot
+ * @param time time that the snapshot restore took
+ */
+ public void addSnapshotRestore(long time) {
+ source.updateSnapshotRestoreTime(time);
+ }
+
+ /**
+ * Record a single instance of a snapshot cloned table
+ * @param time time that the snapshot clone took
+ */
+ public void addSnapshotClone(long time) {
+ source.updateSnapshotCloneTime(time);
+ }
+}
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java?rev=1514513&r1=1514512&r2=1514513&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java Thu Aug 15 22:04:24 2013
@@ -342,6 +342,8 @@ public abstract class BaseLoadBalancer i
private Configuration config;
private static final Random RANDOM = new Random(System.currentTimeMillis());
private static final Log LOG = LogFactory.getLog(BaseLoadBalancer.class);
+
+ protected final MetricsBalancer metricsBalancer = new MetricsBalancer();
protected MasterServices services;
@Override
@@ -409,6 +411,8 @@ public abstract class BaseLoadBalancer i
*/
public Map<ServerName, List<HRegionInfo>> roundRobinAssignment(List<HRegionInfo> regions,
List<ServerName> servers) {
+ metricsBalancer.incrMiscInvocations();
+
if (regions.isEmpty() || servers.isEmpty()) {
return null;
}
@@ -452,6 +456,8 @@ public abstract class BaseLoadBalancer i
*/
public Map<HRegionInfo, ServerName> immediateAssignment(List<HRegionInfo> regions,
List<ServerName> servers) {
+ metricsBalancer.incrMiscInvocations();
+
Map<HRegionInfo, ServerName> assignments = new TreeMap<HRegionInfo, ServerName>();
for (HRegionInfo region : regions) {
assignments.put(region, randomAssignment(region, servers));
@@ -463,6 +469,8 @@ public abstract class BaseLoadBalancer i
* Used to assign a single region to a random server.
*/
public ServerName randomAssignment(HRegionInfo regionInfo, List<ServerName> servers) {
+ metricsBalancer.incrMiscInvocations();
+
if (servers == null || servers.isEmpty()) {
LOG.warn("Wanted to do random assignment but no servers to assign to");
return null;
@@ -489,6 +497,9 @@ public abstract class BaseLoadBalancer i
*/
public Map<ServerName, List<HRegionInfo>> retainAssignment(Map<HRegionInfo, ServerName> regions,
List<ServerName> servers) {
+ // Update metrics
+ metricsBalancer.incrMiscInvocations();
+
// Group all of the old assignments by their hostname.
// We can't group directly by ServerName since the servers all have
// new start-codes.
Added: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/MetricsBalancer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/MetricsBalancer.java?rev=1514513&view=auto
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/MetricsBalancer.java (added)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/MetricsBalancer.java Thu Aug 15 22:04:24 2013
@@ -0,0 +1,41 @@
+/**
+ * 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.master.balancer;
+
+import org.apache.hadoop.hbase.CompatibilitySingletonFactory;
+
+/**
+ * Faced for exposing metrics about the balancer.
+ */
+public class MetricsBalancer {
+
+ private final MetricsBalancerSource source;
+
+ public MetricsBalancer() {
+ source = CompatibilitySingletonFactory.getInstance(MetricsBalancerSource.class);
+ }
+
+ public void balanceCluster(long time) {
+ source.updateBalanceCluster(time);
+ }
+
+ public void incrMiscInvocations() {
+ source.incrMiscInvocations();
+ }
+}
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=1514513&r1=1514512&r2=1514513&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 Thu Aug 15 22:04:24 2013
@@ -246,6 +246,7 @@ public class StochasticLoadBalancer exte
long endTime = EnvironmentEdgeManager.currentTimeMillis();
+ metricsBalancer.balanceCluster(endTime - startTime);
if (initCost > currentCost) {
List<RegionPlan> plans = createRegionPlans(cluster);
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/CloneSnapshotHandler.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/CloneSnapshotHandler.java?rev=1514513&r1=1514512&r2=1514513&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/CloneSnapshotHandler.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/CloneSnapshotHandler.java Thu Aug 15 22:04:24 2013
@@ -36,7 +36,7 @@ import org.apache.hadoop.hbase.TableExis
import org.apache.hadoop.hbase.errorhandling.ForeignException;
import org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher;
import org.apache.hadoop.hbase.master.MasterServices;
-import org.apache.hadoop.hbase.master.MetricsMaster;
+import org.apache.hadoop.hbase.master.MetricsSnapshot;
import org.apache.hadoop.hbase.master.SnapshotSentinel;
import org.apache.hadoop.hbase.master.handler.CreateTableHandler;
import org.apache.hadoop.hbase.monitoring.MonitoredTask;
@@ -48,7 +48,6 @@ import org.apache.hadoop.hbase.snapshot.
import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;
import com.google.common.base.Preconditions;
-import org.apache.hadoop.hbase.util.FSUtils;
/**
* Handler to Clone a snapshot.
@@ -65,17 +64,15 @@ public class CloneSnapshotHandler extend
private final SnapshotDescription snapshot;
private final ForeignExceptionDispatcher monitor;
- private final MetricsMaster metricsMaster;
+ private final MetricsSnapshot metricsSnapshot = new MetricsSnapshot();
private final MonitoredTask status;
private volatile boolean stopped = false;
public CloneSnapshotHandler(final MasterServices masterServices,
- final SnapshotDescription snapshot, final HTableDescriptor hTableDescriptor,
- final MetricsMaster metricsMaster) {
+ final SnapshotDescription snapshot, final HTableDescriptor hTableDescriptor) {
super(masterServices, masterServices.getMasterFileSystem(), hTableDescriptor,
masterServices.getConfiguration(), null, masterServices);
- this.metricsMaster = metricsMaster;
// Snapshot information
this.snapshot = snapshot;
@@ -145,7 +142,7 @@ public class CloneSnapshotHandler extend
} else {
status.markComplete("Snapshot '"+ snapshot.getName() +"' clone completed and table enabled!");
}
- metricsMaster.addSnapshotClone(status.getCompletionTimestamp() - status.getStartTime());
+ metricsSnapshot.addSnapshotClone(status.getCompletionTimestamp() - status.getStartTime());
super.completed(exception);
}
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/DisabledTableSnapshotHandler.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/DisabledTableSnapshotHandler.java?rev=1514513&r1=1514512&r2=1514513&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/DisabledTableSnapshotHandler.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/DisabledTableSnapshotHandler.java Thu Aug 15 22:04:24 2013
@@ -64,8 +64,8 @@ public class DisabledTableSnapshotHandle
* @param masterServices master services provider
*/
public DisabledTableSnapshotHandler(SnapshotDescription snapshot,
- final MasterServices masterServices, final MetricsMaster metricsMaster) {
- super(snapshot, masterServices, metricsMaster);
+ final MasterServices masterServices) {
+ super(snapshot, masterServices);
// setup the timer
timeoutInjector = TakeSnapshotUtils.getMasterTimerAndBindToMonitor(snapshot, conf, monitor);
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/EnabledTableSnapshotHandler.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/EnabledTableSnapshotHandler.java?rev=1514513&r1=1514512&r2=1514513&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/EnabledTableSnapshotHandler.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/EnabledTableSnapshotHandler.java Thu Aug 15 22:04:24 2013
@@ -50,8 +50,8 @@ public class EnabledTableSnapshotHandler
private final ProcedureCoordinator coordinator;
public EnabledTableSnapshotHandler(SnapshotDescription snapshot, MasterServices master,
- final SnapshotManager manager, final MetricsMaster metricsMaster) {
- super(snapshot, master, metricsMaster);
+ final SnapshotManager manager) {
+ super(snapshot, master);
this.coordinator = manager.getCoordinator();
}
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/RestoreSnapshotHandler.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/RestoreSnapshotHandler.java?rev=1514513&r1=1514512&r2=1514513&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/RestoreSnapshotHandler.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/RestoreSnapshotHandler.java Thu Aug 15 22:04:24 2013
@@ -38,7 +38,7 @@ import org.apache.hadoop.hbase.errorhand
import org.apache.hadoop.hbase.executor.EventType;
import org.apache.hadoop.hbase.master.MasterFileSystem;
import org.apache.hadoop.hbase.master.MasterServices;
-import org.apache.hadoop.hbase.master.MetricsMaster;
+import org.apache.hadoop.hbase.master.MetricsSnapshot;
import org.apache.hadoop.hbase.master.SnapshotSentinel;
import org.apache.hadoop.hbase.master.handler.TableEventHandler;
import org.apache.hadoop.hbase.monitoring.MonitoredTask;
@@ -48,7 +48,6 @@ import org.apache.hadoop.hbase.snapshot.
import org.apache.hadoop.hbase.snapshot.RestoreSnapshotException;
import org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper;
import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;
-import org.apache.hadoop.hbase.util.FSUtils;
/**
* Handler to Restore a snapshot.
@@ -64,16 +63,14 @@ public class RestoreSnapshotHandler exte
private final SnapshotDescription snapshot;
private final ForeignExceptionDispatcher monitor;
- private final MetricsMaster metricsMaster;
+ private final MetricsSnapshot metricsSnapshot = new MetricsSnapshot();
private final MonitoredTask status;
private volatile boolean stopped = false;
public RestoreSnapshotHandler(final MasterServices masterServices,
- final SnapshotDescription snapshot, final HTableDescriptor htd,
- final MetricsMaster metricsMaster) throws IOException {
+ final SnapshotDescription snapshot, final HTableDescriptor htd) throws IOException {
super(EventType.C_M_RESTORE_SNAPSHOT, htd.getTableName(), masterServices, masterServices);
- this.metricsMaster = metricsMaster;
// Snapshot information
this.snapshot = snapshot;
@@ -153,7 +150,7 @@ public class RestoreSnapshotHandler exte
} else {
status.markComplete("Restore snapshot '"+ snapshot.getName() +"'!");
}
- metricsMaster.addSnapshotRestore(status.getCompletionTimestamp() - status.getStartTime());
+ metricsSnapshot.addSnapshotRestore(status.getCompletionTimestamp() - status.getStartTime());
super.completed(exception);
}
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java?rev=1514513&r1=1514512&r2=1514513&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java Thu Aug 15 22:04:24 2013
@@ -450,7 +450,7 @@ public class SnapshotManager implements
// Take the snapshot of the disabled table
DisabledTableSnapshotHandler handler =
- new DisabledTableSnapshotHandler(snapshot, master, metricsMaster);
+ new DisabledTableSnapshotHandler(snapshot, master);
snapshotTable(snapshot, handler);
}
@@ -466,7 +466,7 @@ public class SnapshotManager implements
// Take the snapshot of the enabled table
EnabledTableSnapshotHandler handler =
- new EnabledTableSnapshotHandler(snapshot, master, this, metricsMaster);
+ new EnabledTableSnapshotHandler(snapshot, master, this);
snapshotTable(snapshot, handler);
}
@@ -645,7 +645,7 @@ public class SnapshotManager implements
try {
CloneSnapshotHandler handler =
- new CloneSnapshotHandler(master, snapshot, hTableDescriptor, metricsMaster).prepare();
+ new CloneSnapshotHandler(master, snapshot, hTableDescriptor).prepare();
this.executorService.submit(handler);
this.restoreHandlers.put(tableName, handler);
} catch (Exception e) {
@@ -738,7 +738,7 @@ public class SnapshotManager implements
try {
RestoreSnapshotHandler handler =
- new RestoreSnapshotHandler(master, snapshot, hTableDescriptor, metricsMaster).prepare();
+ new RestoreSnapshotHandler(master, snapshot, hTableDescriptor).prepare();
this.executorService.submit(handler);
restoreHandlers.put(tableName, handler);
} catch (Exception e) {
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.java?rev=1514513&r1=1514512&r2=1514513&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.java Thu Aug 15 22:04:24 2013
@@ -41,13 +41,12 @@ import org.apache.hadoop.hbase.errorhand
import org.apache.hadoop.hbase.executor.EventHandler;
import org.apache.hadoop.hbase.executor.EventType;
import org.apache.hadoop.hbase.master.MasterServices;
-import org.apache.hadoop.hbase.master.MetricsMaster;
+import org.apache.hadoop.hbase.master.MetricsSnapshot;
import org.apache.hadoop.hbase.master.SnapshotSentinel;
import org.apache.hadoop.hbase.master.TableLockManager;
import org.apache.hadoop.hbase.master.TableLockManager.TableLock;
import org.apache.hadoop.hbase.monitoring.MonitoredTask;
import org.apache.hadoop.hbase.monitoring.TaskMonitor;
-import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription;
import org.apache.hadoop.hbase.snapshot.ClientSnapshotDescriptionUtils;
import org.apache.hadoop.hbase.snapshot.SnapshotCreationException;
@@ -72,7 +71,7 @@ public abstract class TakeSnapshotHandle
// none of these should ever be null
protected final MasterServices master;
- protected final MetricsMaster metricsMaster;
+ protected final MetricsSnapshot metricsSnapshot = new MetricsSnapshot();
protected final SnapshotDescription snapshot;
protected final Configuration conf;
protected final FileSystem fs;
@@ -90,14 +89,12 @@ public abstract class TakeSnapshotHandle
* @param snapshot descriptor of the snapshot to take
* @param masterServices master services provider
*/
- public TakeSnapshotHandler(SnapshotDescription snapshot, final MasterServices masterServices,
- final MetricsMaster metricsMaster) {
+ public TakeSnapshotHandler(SnapshotDescription snapshot, final MasterServices masterServices) {
super(masterServices, EventType.C_M_SNAPSHOT_TABLE);
assert snapshot != null : "SnapshotDescription must not be nul1";
assert masterServices != null : "MasterServices must not be nul1";
this.master = masterServices;
- this.metricsMaster = metricsMaster;
this.snapshot = snapshot;
this.snapshotTable = TableName.valueOf(snapshot.getTable());
this.conf = this.master.getConfiguration();
@@ -187,7 +184,7 @@ public abstract class TakeSnapshotHandle
completeSnapshot(this.snapshotDir, this.workingDir, this.fs);
status.markComplete("Snapshot " + snapshot.getName() + " of table " + snapshotTable
+ " completed");
- metricsMaster.addSnapshot(status.getCompletionTimestamp() - status.getStartTime());
+ metricsSnapshot.addSnapshot(status.getCompletionTimestamp() - status.getStartTime());
} catch (Exception e) {
status.abort("Failed to complete snapshot " + snapshot.getName() + " on table " +
snapshotTable + " because " + e.getMessage());
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java?rev=1514513&r1=1514512&r2=1514513&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java Thu Aug 15 22:04:24 2013
@@ -178,7 +178,7 @@ public class TestCatalogJanitor {
private final AssignmentManager asm;
MockMasterServices(final Server server) throws IOException {
- this.mfs = new MasterFileSystem(server, this, null, false);
+ this.mfs = new MasterFileSystem(server, this, false);
this.asm = Mockito.mock(AssignmentManager.class);
}