Skip to content

Commit c08e945

Browse files
ddanielrdlmarion
andauthored
Modify accumulo-cluster to support starting and stopping groups of tservers (apache#5114)
* Support starting and stopping groups of tservers Required modifications to ZooZap to support resource groups. * Update assemble/bin/accumulo-cluster Co-authored-by: Dave Marion <dlmarion@apache.org> * Remove deprecated commands and old flags Removed the deprecated commands for start/stop-tservers and old flag values for tservers * Run ZooZap for each specific group name --------- Co-authored-by: Dave Marion <dlmarion@apache.org>
1 parent 99f8863 commit c08e945

File tree

2 files changed

+36
-39
lines changed

2 files changed

+36
-39
lines changed

assemble/bin/accumulo-cluster

+22-36
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,10 @@ Commands:
3131
start Starts Accumulo cluster
3232
stop Stops Accumulo cluster
3333
kill Kills Accumulo cluster
34-
start-non-tservers Deprecated. Starts all services except tservers
35-
start-servers [--all|--tservers|--no-tservers|--sservers [group]|--compactors [group]]
34+
start-servers [--all|--tservers [group]|--sservers [group]|--compactors [group]]
3635
Starts various server types, can optionally specify a group
37-
stop-servers [--all|--tservers| --no-tservers|--sservers [group]|--compactors [group]]
36+
stop-servers [--all|--tservers [group]|--sservers [group]|--compactors [group]]
3837
Starts various server types, can optionally specify a group
39-
start-tservers Deprecated. Starts all tservers on cluster
40-
stop-tservers Deprecated. Stops all tservers on cluster
4138
start-here Starts all services on this node
4239
stop-here Stops all services on this node
4340
EOF
@@ -273,7 +270,12 @@ function stop_sservers() {
273270

274271
function start_tservers() {
275272
echo "Starting tablet servers ..."
276-
for group in $TSERVER_GROUPS; do
273+
groups=$TSERVER_GROUPS
274+
if [[ -n $1 ]]; then
275+
groups="$1"
276+
echo "Only starting servers for group: ${groups}"
277+
fi
278+
for group in $groups; do
277279
echo "Starting tablet servers for group $group"
278280
count=1
279281
G="TSERVER_HOSTS_${group}"
@@ -293,9 +295,7 @@ function start_tservers() {
293295
function start_all() {
294296
unset DISPLAY
295297

296-
if [[ $1 != "--no-tservers" ]]; then
297-
start_tservers
298-
fi
298+
start_tservers
299299

300300
for manager in $MANAGER_HOSTS; do
301301
start_service "$manager" manager "1"
@@ -416,8 +416,12 @@ function kill_service() {
416416
function stop_tservers() {
417417

418418
echo "Stopping unresponsive tablet servers (if any)..."
419-
420-
for group in $TSERVER_GROUPS; do
419+
groups=$TSERVER_GROUPS
420+
if [[ -n $1 ]]; then
421+
groups="$1"
422+
echo "Only stopping servers for group: ${groups}"
423+
fi
424+
for group in $groups; do
421425
echo "Stopping tablet servers for group $group"
422426
G="TSERVER_HOSTS_${group}"
423427
S="TSERVERS_PER_HOST_${group}"
@@ -429,18 +433,18 @@ function stop_tservers() {
429433
sleep 10
430434

431435
echo "Stopping unresponsive tablet servers hard (if any)..."
432-
for group in $TSERVER_GROUPS; do
436+
for group in $groups; do
433437
G="TSERVER_HOSTS_${group}"
434438
S="TSERVERS_PER_HOST_${group}"
435439
for tserver in ${!G}; do
436440
kill_service "$tserver" tserver "${!S}" "-o" "tserver.group=$group" &
437441
done
442+
echo "Cleaning tablet server entries from zookeeper"
443+
if ! isDebug; then
444+
${accumulo_cmd} org.apache.accumulo.server.util.ZooZap -tservers -group "$group"
445+
fi
438446
done
439447

440-
echo "Cleaning tablet server entries from zookeeper"
441-
if ! isDebug; then
442-
${accumulo_cmd} org.apache.accumulo.server.util.ZooZap -tservers
443-
fi
444448
}
445449

446450
function kill_all() {
@@ -698,25 +702,10 @@ EOF
698702
parse_config
699703
kill_all
700704
;;
701-
start-non-tservers)
702-
echo "$1 is deprecated. Please use \`start-servers --no-tservers\` instead"
703-
parse_config
704-
start_all --no-tservers
705-
;;
706-
start-tservers)
707-
echo "$1 is deprecated. Please use \`start-servers --tservers\` instead"
708-
parse_config
709-
start_tservers
710-
;;
711705
start-here)
712706
parse_config
713707
start_here
714708
;;
715-
stop-tservers)
716-
echo "$1 is deprecated. Please use \`stop-servers --tservers\` instead"
717-
parse_config
718-
stop_tservers
719-
;;
720709
stop-here)
721710
parse_config
722711
stop_here
@@ -729,10 +718,7 @@ EOF
729718
start_all
730719
;;
731720
"--tservers")
732-
start_tservers
733-
;;
734-
"--no-tservers")
735-
start_all --no-tservers
721+
start_tservers "${program_args[@]:2}"
736722
;;
737723
"--sservers")
738724
start_sservers "${program_args[@]:2}"
@@ -753,7 +739,7 @@ EOF
753739
stop_all
754740
;;
755741
"--tservers")
756-
stop_tservers
742+
stop_tservers "${program_args[@]:2}"
757743
;;
758744
"--sservers")
759745
stop_sservers "${program_args[@]:2}"

server/base/src/main/java/org/apache/accumulo/server/util/ZooZap.java

+14-3
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.apache.accumulo.core.fate.zookeeper.ZooUtil.NodeMissingPolicy;
3030
import org.apache.accumulo.core.lock.ServiceLock;
3131
import org.apache.accumulo.core.lock.ServiceLockPaths.AddressSelector;
32+
import org.apache.accumulo.core.lock.ServiceLockPaths.ResourceGroupPredicate;
3233
import org.apache.accumulo.core.lock.ServiceLockPaths.ServiceLockPath;
3334
import org.apache.accumulo.core.singletons.SingletonManager;
3435
import org.apache.accumulo.core.singletons.SingletonManager.Mode;
@@ -68,6 +69,9 @@ static class Opts extends Help {
6869
boolean zapManager = false;
6970
@Parameter(names = "-tservers", description = "remove tablet server locks")
7071
boolean zapTservers = false;
72+
@Parameter(names = "-group", description = "limit the zap to a specific resource group",
73+
arity = 1)
74+
String resourceGroup = "";
7175
@Parameter(names = "-compactors", description = "remove compactor locks")
7276
boolean zapCompactors = false;
7377
@Parameter(names = "-sservers", description = "remove scan server locks")
@@ -108,10 +112,17 @@ public void execute(String[] args) throws Exception {
108112
}
109113
}
110114

115+
ResourceGroupPredicate rgp;
116+
if (!opts.resourceGroup.isEmpty()) {
117+
rgp = rg -> rg.equals(opts.resourceGroup);
118+
} else {
119+
rgp = rg -> true;
120+
}
121+
111122
if (opts.zapTservers) {
112123
try {
113124
Set<ServiceLockPath> tserverLockPaths =
114-
context.getServerPaths().getTabletServer(rg -> true, AddressSelector.all(), false);
125+
context.getServerPaths().getTabletServer(rgp, AddressSelector.all(), false);
115126
for (ServiceLockPath tserverPath : tserverLockPaths) {
116127

117128
message("Deleting " + tserverPath + " from zookeeper", opts);
@@ -133,7 +144,7 @@ public void execute(String[] args) throws Exception {
133144

134145
if (opts.zapCompactors) {
135146
Set<ServiceLockPath> compactorLockPaths =
136-
context.getServerPaths().getCompactor(rg -> true, AddressSelector.all(), false);
147+
context.getServerPaths().getCompactor(rgp, AddressSelector.all(), false);
137148
Set<String> compactorResourceGroupPaths = new HashSet<>();
138149
compactorLockPaths.forEach(p -> compactorResourceGroupPaths
139150
.add(p.toString().substring(0, p.toString().lastIndexOf('/'))));
@@ -151,7 +162,7 @@ public void execute(String[] args) throws Exception {
151162
if (opts.zapScanServers) {
152163
try {
153164
Set<ServiceLockPath> sserverLockPaths =
154-
context.getServerPaths().getScanServer(rg -> true, AddressSelector.all(), false);
165+
context.getServerPaths().getScanServer(rgp, AddressSelector.all(), false);
155166
for (ServiceLockPath sserverPath : sserverLockPaths) {
156167
message("Deleting " + sserverPath + " from zookeeper", opts);
157168
if (!zoo.getChildren(sserverPath.toString()).isEmpty()) {

0 commit comments

Comments
 (0)