Existe-t-il un moyen propre d’arrêter une tempête sans la tuer avec "kill XXX" où XXX est le PID?
Je lance "tempête tuer topologie-nom" pour tuer la topologie, mais après cela, y at-il un moyen propre pour arrêter les travailleurs, nimbus, superviseur et ui?
Je n'ai trouvé aucune commande correspondant à cela dans la documentation: https://github.com/nathanmarz/storm/wiki/Command-line-client
commande pour tuer la topologie (comme vous l'avez mentionné à juste titre)
storm kill topology-name
Maintenant, pour arrêter le cluster, vous devez exécuter la commande suivante sur chaque nœud.
Sudo service supervisord stop
Donnez à supervisord
quelques secondes pour arrêter tous les processus. Notez que si vous essayez d’exécuter supervisorctl
lorsque supervisord est arrêté, un message d’erreur apparaît (il s’agit d’un problème d’interface utilisateur connu dans supervisord 2.x).
De this documentation
Comment tuer TOUS les processus Storm, y compris les processus de travail? Tous les threads de travail (lancés par les démons Supervisor sur les nœuds esclaves) en cours d'exécution lors de l'arrêt du cluster continueront de s'exécuter. C'est une décision de conception délibérée de Storm, car cela signifie que le fait de planter/de redémarrer les démons Nimbus et Supervisor n'affectera aucune topologie en cours d'exécution dans Storm. L'inconvénient est que vous devez déployer des efforts supplémentaires pour arrêter complètement tous les processus liés à Storm dans un cluster.
# If you want to kill ALL processes follow this procedure on the slave nodes:
$ Sudo supervisorctl stop storm-supervisor
$ Sudo pkill -TERM -u storm -f 'backtype.storm.daemon.worker'
À partir de la page à laquelle vous avez accédé:
tuer
Syntaxe: tempête tuer topologie-nom [-w wait-time-secs]
Tue la topologie avec le nom topology-name. Storm désactive d'abord les becs de la topologie pendant la durée du délai de message de la topologie pour permettre à tous les messages en cours de traitement de terminer leur traitement. Storm va alors arrêter les travailleurs et nettoyer leur état. Vous pouvez remplacer le délai d'attente entre la désactivation et l'arrêt par Storm avec l'option -w.
Comme vous pouvez le constater, ceci est conçu pour vous donner un arrêt "propre". La commande kill arrête les travailleurs.
Eh bien, si vous avez commencé tempête en tant que.
après cela, vous pouvez oublier l'identifiant du processus, dans ce cas, vous pouvez utiliser l'outil jps pour trouver le pid puis le tuer
$ Java_HOME/bin/jps
3201 ConsoleConsumer
7528 Jps
2966 Kafka
3680 nimbus
3681 superviseur
6749 lanceur
2669 QuorumPeerMain
tuer le nimbe en premier
Sudo kill 3681
Sudo kill 3680