阻止风暴:正确的方式
有没有一种干净的方法来阻止风暴而不用“杀死XXX”来杀死它,其中XXX是PID?
我运行“storm kill topology-name”来杀死拓扑,但是在那之后,有没有一种干净的方式来关闭worker,nimbus,supervisor和ui?
我没有从文档中找到任何与此相对应的命令:https://github.com/nathanmarz/storm/wiki/Command-line-client
有没有一种干净的方法来阻止风暴而不用“杀死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 2.x 中的已知用户界面问题)supervisord
supervisorctl
从本文档
如何杀死所有 Storm 进程,包括工作进程?在停止集群时碰巧正在运行的任何工作线程(由从属节点上的 Supervisor 守护程序启动)都将继续运行。这是 Storm 的一个深思熟虑的设计决策,因为这意味着崩溃/重新启动 Nimbus 和 Supervisor 守护程序不会影响 Storm 中任何正在运行的拓扑。缺点是您必须付出一些额外的努力来完全停止集群中所有与 Storm 相关的进程。
如果要杀死所有进程,请在从属节点上执行以下步骤:
$ sudo supervisorctl stop storm-supervisor
$ sudo pkill -TERM -u storm -f 'backtype.storm.daemon.worker'
从您链接到的页面中:
杀
语法: 风暴终止拓扑名称 [-w 等待时间-秒]
终止名为拓扑名称的拓扑。Storm 将首先在拓扑的消息超时期间停用拓扑的流出,以允许当前正在处理的所有消息完成处理。然后,Storm将关闭工人并清理他们的状态。您可以使用 -w 标志覆盖 Storm 在停用和关机之间等待的时间长度。
如您所见,这旨在为您提供“干净”的关机。kill 命令会关闭工作人员。