有没有一种干净的方法来阻止风暴而不用“杀死XXX”杀死它,其中XXX是PID?
我运行“storm kill topology-name”来杀死拓扑,但在那之后,是否有一种关闭工作人员,灵气,主管和ui的干净方法?
我没有在文档中找到任何与此相对应的命令:https://github.com/nathanmarz/storm/wiki/Command-line-client
答案 0 :(得分:16)
命令杀死拓扑(正如你刚才提到的那样)
storm kill topology-name
现在要关闭群集,您需要对每个节点运行以下命令
sudo service supervisord stop
让supervisord
几秒钟关闭所有进程。请注意,当supervisord本身停止时尝试运行supervisorctl
将导致错误消息(这似乎是supervisord 2.x中已知的用户界面问题)
来自this文档
如何杀死包括工作进程在内的所有Storm进程?当您停止群集时恰好正在运行的任何工作线程(由从属节点上的Supervisor守护程序启动)将继续运行。这是Storm的一个深思熟虑的设计决策,因为它意味着崩溃/重启Nimbus和Supervisor守护进程不会影响Storm中的任何运行拓扑。缺点是你必须付出额外的努力来完全停止集群中所有与Storm相关的进程。
# 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'
答案 1 :(得分:2)
从您关联的页面:
杀
语法:storm kill topology-name [-w wait-time-secs]
使用名称topology-name终止拓扑。 Storm将在拓扑的消息超时期间首先停用拓扑的spouts,以允许当前正在处理的所有消息完成处理。风暴将关闭工人并清理他们的状态。您可以使用-w标志覆盖Storm在停用和关闭之间等待的时间长度。
正如您所看到的,这旨在让您“干净”关机。 kill命令关闭了worker。
答案 2 :(得分:0)
好吧,如果你已经开始风暴./storm nimbus& ./storm supervisor& ./storm ui然后
之后你可能忘记了进程ID,在这种情况下,你可以使用jps工具找出pid然后杀死它们
$ JAVA_HOME / bin / jps
3201 ConsoleConsumer
7528 Jps
2966卡夫卡3680 nimbus
3681主管6749 Launcher
2669 QuorumPeerMain
首先杀死nimbus
$ sudo kill 3681
$ sudo kill 3680
答案 3 :(得分:0)
如果您想一次杀死所有拓扑:
bin/storm kill `bin/storm list | grep <some common keyword> | awk '{print $1}'` -w 5