HBASE-10314 Add Chaos Monkey that doesn't touch the master

This commit is contained in:
Elliott Clark 2014-09-18 11:42:17 -07:00
parent a8329fa364
commit 50501f8100
2 changed files with 66 additions and 0 deletions

View File

@ -67,12 +67,14 @@ public abstract class MonkeyFactory {
public static final String SLOW_DETERMINISTIC = "slowDeterministic";
public static final String UNBALANCE = "unbalance";
public static final String SERVER_KILLING = "serverKilling";
public static final String STRESS_AM = "stressAM";
public static Map<String, MonkeyFactory> FACTORIES = ImmutableMap.<String,MonkeyFactory>builder()
.put(CALM, new CalmMonkeyFactory())
.put(SLOW_DETERMINISTIC, new SlowDeterministicMonkeyFactory())
.put(UNBALANCE, new UnbalanceMonkeyFactory())
.put(SERVER_KILLING, new ServerKillingMonkeyFactory())
.put(STRESS_AM, new StressAssignmentManagerMonkeyFactory())
.build();
public static MonkeyFactory getFactory(String factoryName) {

View File

@ -0,0 +1,64 @@
package org.apache.hadoop.hbase.chaos.factories;
import org.apache.hadoop.hbase.chaos.actions.Action;
import org.apache.hadoop.hbase.chaos.actions.AddColumnAction;
import org.apache.hadoop.hbase.chaos.actions.BatchRestartRsAction;
import org.apache.hadoop.hbase.chaos.actions.CompactRandomRegionOfTableAction;
import org.apache.hadoop.hbase.chaos.actions.CompactTableAction;
import org.apache.hadoop.hbase.chaos.actions.DumpClusterStatusAction;
import org.apache.hadoop.hbase.chaos.actions.FlushRandomRegionOfTableAction;
import org.apache.hadoop.hbase.chaos.actions.FlushTableAction;
import org.apache.hadoop.hbase.chaos.actions.MergeRandomAdjacentRegionsOfTableAction;
import org.apache.hadoop.hbase.chaos.actions.MoveRandomRegionOfTableAction;
import org.apache.hadoop.hbase.chaos.actions.MoveRegionsOfTableAction;
import org.apache.hadoop.hbase.chaos.actions.RemoveColumnAction;
import org.apache.hadoop.hbase.chaos.actions.RestartRandomRsAction;
import org.apache.hadoop.hbase.chaos.actions.RestartRsHoldingMetaAction;
import org.apache.hadoop.hbase.chaos.actions.RollingBatchRestartRsAction;
import org.apache.hadoop.hbase.chaos.actions.SplitRandomRegionOfTableAction;
import org.apache.hadoop.hbase.chaos.monkies.ChaosMonkey;
import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;
import org.apache.hadoop.hbase.chaos.policies.CompositeSequentialPolicy;
import org.apache.hadoop.hbase.chaos.policies.DoActionsOncePolicy;
import org.apache.hadoop.hbase.chaos.policies.PeriodicRandomActionPolicy;
public class StressAssignmentManagerMonkeyFactory extends MonkeyFactory {
@Override
public ChaosMonkey build() {
// Actions that could slow down region movement.
// These could also get regions stuck if there are issues.
Action[] actions1 = new Action[] {
new CompactTableAction(tableName, 0.5f),
new CompactRandomRegionOfTableAction(tableName, 0.6f),
new FlushTableAction(tableName),
new FlushRandomRegionOfTableAction(tableName)
};
Action[] actions2 = new Action[] {
new SplitRandomRegionOfTableAction(tableName),
new MergeRandomAdjacentRegionsOfTableAction(tableName),
new AddColumnAction(tableName),
new RemoveColumnAction(tableName, columnFamilies),
new MoveRegionsOfTableAction(800, 1600, tableName),
new MoveRandomRegionOfTableAction(800, tableName),
new RestartRandomRsAction(60000),
new BatchRestartRsAction(5000, 0.5f),
new RollingBatchRestartRsAction(5000, 1.0f),
new RestartRsHoldingMetaAction(35000)
};
// Action to log more info for debugging
Action[] actions3 = new Action[] {
new DumpClusterStatusAction()
};
return new PolicyBasedChaosMonkey(util,
new PeriodicRandomActionPolicy(90 * 1000, actions1),
new CompositeSequentialPolicy(
new DoActionsOncePolicy(90 * 1000, actions2),
new PeriodicRandomActionPolicy(90 * 1000, actions2)),
new PeriodicRandomActionPolicy(90 * 1000, actions3)
);
}
}