1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.chaos.factories;
19
20 import org.apache.hadoop.hbase.chaos.actions.*;
21 import org.apache.hadoop.hbase.chaos.monkies.ChaosMonkey;
22 import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;
23 import org.apache.hadoop.hbase.chaos.policies.CompositeSequentialPolicy;
24 import org.apache.hadoop.hbase.chaos.policies.DoActionsOncePolicy;
25 import org.apache.hadoop.hbase.chaos.policies.PeriodicRandomActionPolicy;
26
27 public class StressAssignmentManagerMonkeyFactory extends MonkeyFactory {
28 @Override
29 public ChaosMonkey build() {
30
31
32
33 Action[] actions1 = new Action[]{
34 new CompactTableAction(tableName, 0.5f),
35 new CompactRandomRegionOfTableAction(tableName, 0.6f),
36 new FlushTableAction(tableName),
37 new FlushRandomRegionOfTableAction(tableName)
38 };
39
40 Action[] actions2 = new Action[]{
41 new SplitRandomRegionOfTableAction(tableName),
42 new MergeRandomAdjacentRegionsOfTableAction(tableName),
43 new AddColumnAction(tableName),
44 new RemoveColumnAction(tableName, columnFamilies),
45 new MoveRegionsOfTableAction(MonkeyConstants.DEFAULT_MOVE_REGIONS_SLEEP_TIME,
46 1600,
47 tableName),
48 new MoveRandomRegionOfTableAction(MonkeyConstants.DEFAULT_MOVE_RANDOM_REGION_SLEEP_TIME,
49 tableName),
50 new RestartRandomRsAction(MonkeyConstants.DEFAULT_RESTART_RANDOM_RS_SLEEP_TIME),
51 new BatchRestartRsAction(MonkeyConstants.DEFAULT_ROLLING_BATCH_RESTART_RS_SLEEP_TIME, 0.5f),
52 new RollingBatchRestartRsAction(MonkeyConstants.DEFAULT_BATCH_RESTART_RS_SLEEP_TIME, 1.0f),
53 new RestartRsHoldingMetaAction(MonkeyConstants.DEFAULT_RESTART_RS_HOLDING_META_SLEEP_TIME),
54 new ChangeSplitPolicyAction(tableName),
55 new SplitAllRegionOfTableAction(tableName),
56 new DecreaseMaxHFileSizeAction(MonkeyConstants.DEFAULT_DECREASE_HFILE_SIZE_SLEEP_TIME,
57 tableName),
58 };
59
60
61 Action[] actions3 = new Action[]{
62 new DumpClusterStatusAction()
63 };
64
65 return new PolicyBasedChaosMonkey(util,
66 new PeriodicRandomActionPolicy(90 * 1000, actions1),
67 new CompositeSequentialPolicy(
68 new DoActionsOncePolicy(90 * 1000, actions2),
69 new PeriodicRandomActionPolicy(90 * 1000, actions2)),
70 new PeriodicRandomActionPolicy(90 * 1000, actions3)
71 );
72 }
73 }