web-dev-qa-db-fra.com

Stoping Storm: le bon chemin

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

16
zenbeni

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'
16
user2720864

À 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.

2
Stephen C

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 

0
Sam