java apache-storm

java - Deteniendo la tormenta: el camino correcto



apache-storm (3)

Bueno, si has empezado Storm como ./storm nimbus & ./storm supervisor & ./storm ui entonces

después de eso, puede que olvide los ID de proceso, en ese caso, puede usar la herramienta jps para descubrir los de pid y luego matarlos como

$ JAVA_HOME / bin / jps

3201 ConsoleConsumer

7528 jps

2966 Kafka

3680 nimbo

Supervisor 3681

6749 Launcher

2669 QuorumPeerMain

matando a nimbo primero

$ sudo kill 3681

$ sudo kill 3680

¿Hay una forma limpia de detener la tormenta sin matarla con "kill XXX" donde XXX es el PID?

Ejecuto "storm kill topology-name" para matar a la topología, pero después de eso, ¿hay una forma limpia de cerrar trabajadores, nimbus, supervisor y ui?

No encontré ningún comando que corresponda a esto en la documentación: https://github.com/nathanmarz/storm/wiki/Command-line-client


Desde la página a la que has vinculado:

matar

Sintaxis: storm kill topology-name [-w wait-time-secs]

Mata la topología con el nombre topología-nombre. Storm desactivará primero los picos de la topología durante el tiempo de espera del mensaje de la topología para permitir que todos los mensajes que se procesan actualmente finalicen el procesamiento. Storm entonces cerrará a los trabajadores y limpiará su estado. Puede anular el período de tiempo que Storm espera entre la desactivación y el apagado con el indicador -w.

Como puede ver, esto está diseñado para darle un apagado "limpio". El comando de matar apaga a los trabajadores.


comando para matar a la topología (como bien has mencionado)

storm kill topology-name

Ahora, para cerrar el clúster, debe ejecutar el siguiente comando en cada nodo

sudo service supervisord stop

Dale a supervisord unos segundos para que cierre todos los procesos. Tenga en cuenta que al intentar ejecutar supervisorctl cuando se detiene Supervord, se generará un mensaje de error (esto parece ser un problema conocido de la interfaz de usuario en Supervord 2.x)

De this documentación

¿Cómo eliminar TODOS los procesos de Storm, incluidos los procesos de trabajo? Todos los subprocesos de trabajo (iniciados por los demonios Supervisor en los nodos esclavos) que se ejecutan cuando se detiene el clúster continuarán ejecutándose. Esta es una decisión deliberada de diseño de Storm porque significa que el bloqueo / reinicio de los demonios Nimbus y Supervisor no afectará ninguna topología en ejecución en Storm. El inconveniente es que tiene que hacer un esfuerzo adicional para detener completamente todos los procesos relacionados con Storm en un clúster.

# 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''