有没有一种干净的方法来阻止风暴而不用“kill XXX”杀死它,其中 XXX 是 PID?
我运行“storm kill topology-name”来杀死拓扑,但在那之后,有没有一种干净的方法来关闭worker、nimbus、supervisor和ui?
我没有从文档中找到与此相对应的任何命令:https ://github.com/nathanmarz/storm/wiki/Command-line-client
有没有一种干净的方法来阻止风暴而不用“kill XXX”杀死它,其中 XXX 是 PID?
我运行“storm kill topology-name”来杀死拓扑,但在那之后,有没有一种干净的方法来关闭worker、nimbus、supervisor和ui?
我没有从文档中找到与此相对应的任何命令:https ://github.com/nathanmarz/storm/wiki/Command-line-client
杀死拓扑的命令(正如您正确提到的):
storm kill topology-name
要关闭集群,您需要在每个节点上运行以下命令:
sudo service supervisord stop
注意:给supervisord
几秒钟来关闭所有进程。请注意,在 supervisord 本身停止时尝试运行supervisorctl
将导致错误消息(这似乎是 supervisord 2.x 中的一个已知用户界面问题)
从这个文档
如何杀死包括工作进程在内的所有 Storm 进程?在您停止集群时碰巧正在运行的任何工作线程(由从属节点上的主管守护程序启动)将继续运行。这是 Storm 深思熟虑的设计决定,因为这意味着崩溃/重启 Nimbus 和 Supervisor 守护进程不会影响 Storm 中任何正在运行的拓扑。缺点是您必须付出一些额外的努力才能完全停止集群中所有与 Storm 相关的进程。
如果要杀死所有进程,请在从节点上执行以下过程:
$ sudo supervisorctl stop storm-supervisor
$ sudo pkill -TERM -u storm -f 'backtype.storm.daemon.worker'
从您链接到的页面:
杀
语法:storm kill topology-name [-w wait-time-secs]
终止名为 topology-name 的拓扑。Storm 将首先在拓扑的消息超时期间停用拓扑的 spout,以允许当前正在处理的所有消息完成处理。Storm 然后将关闭工作人员并清理他们的状态。您可以使用 -w 标志覆盖 Storm 在停用和关闭之间等待的时间长度。
如您所见,这旨在为您提供“干净”的关机。kill 命令关闭工人。
好吧,如果您以 ./storm nimbus & ./storm supervisor & ./storm ui 的身份启动了storm
之后您可能会忘记进程ID,在这种情况下您可以使用jps工具找出pid然后将它们杀死为
$JAVA_HOME/bin/jps
3201 控制台消费者
7528 日元
2966 卡夫卡
3680 灵气
3681主管
6749 发射器
第2669章
先杀灵气
$ sudo 杀死 3681
$ sudo 杀死 3680
如果您想一口气杀死所有拓扑:
bin/storm kill `bin/storm list | grep <some common keyword> | awk '{print $1}'` -w 5