阻止风暴:正确的方法

sxpgvts3  于 2021-06-24  发布在  Storm
关注(0)|答案(4)|浏览(403)

有没有一个干净的方法来阻止风暴而不杀死它与“杀死”其中是pid?
我运行“storm kill topology name”来终止拓扑,但是在那之后,有没有一种干净的方法来关闭worker、nimbus、supervisor和ui?
我在文档中找不到与此对应的任何命令:https://github.com/nathanmarz/storm/wiki/command-line-client

jk9hmnmh

jk9hmnmh1#

如果你想一次杀死所有的拓扑:

bin/storm kill `bin/storm list | grep <some common keyword>  | awk '{print $1}'` -w 5
kx5bkwkv

kx5bkwkv2#

好吧,如果你已经开始风暴作为./storm nimbus&/storm supervisor&/storm ui那么
在此之后,您可能忘记了进程id,在这种情况下,您可以使用jps工具找出pid,然后根据需要杀死它们
$java\ U主页/bin/jps
3201控制台消费者
7528日元
2966Kafka
3680光轮
3681主管
6749发射器
2669 quorumpeermain号
先杀光轮
$sudo杀死3681
$sudo杀死3680

l7wslrjt

l7wslrjt3#

终止拓扑的命令(正如您正确提到的):

storm kill topology-name

要关闭群集,需要在每个节点上运行以下命令:

sudo service supervisord stop

注:给出 supervisord 几秒钟后关闭所有进程。请注意,尝试运行 supervisorctl 当supervisord本身停止时,将产生一条错误消息(这似乎是supervisord 2.x中已知的用户界面问题)
从本文档
如何杀死包括工作进程在内的所有风暴进程?当您停止集群时,任何碰巧正在运行的工作线程(由从属节点上的主管守护进程启动)都将继续运行。这是storm深思熟虑的设计决策,因为这意味着崩溃/重启nimbus和supervisor守护进程不会影响storm中任何正在运行的拓扑。缺点是您必须投入一些额外的精力来完全停止集群中所有与风暴相关的进程。
如果要终止所有进程,请在从属节点上执行以下步骤:

$ sudo supervisorctl stop storm-supervisor
$ sudo pkill -TERM -u storm -f 'backtype.storm.daemon.worker'
knpiaxh1

knpiaxh14#

从链接到的页面:
杀死
语法:storm kill拓扑名称[-w wait time secs]
终止名为topology name的拓扑。storm将首先在拓扑的消息超时期间停用拓扑的喷口,以允许当前正在处理的所有消息完成处理。风暴将关闭工人和清理他们的状态。您可以使用-w标志覆盖停用和关闭之间的风暴等待时间长度。
如您所见,这是为了给您一个“干净的”关机。杀戮命令关闭了工人。

相关问题