当前位置: 首页 > 面试题库 >

如何以编程方式杀死风暴拓扑?

漆雕绍晖
2023-03-14
问题内容

我正在使用Java类向拓扑集群提交拓扑,并且我还计划使用Java类取消拓扑。但是根据storm
文档,以下命令用于终止拓扑,并且没有Java方法(这有正当的理由)

storm kill {stormname}

那么从Java类中调用Shell脚本杀死拓扑就可以了吗?还有其他杀死拓扑的方法吗?

另外,如何获取风暴群集中正在运行的拓扑的状态?


问题答案:

要杀死拓扑,您可以尝试以下方法

import backtype.storm.generated.KillOptions
import backtype.storm.generated.Nimbus.Client;
import backtype.storm.utils.NimbusClient
import backtype.storm.utils.Utils

Map conf = Utils.readStormConfig();
Client client = NimbusClient.getConfiguredClient(conf).getClient();
KillOptions killOpts = new KillOptions();
//killOpts.set_wait_secs(waitSeconds); // time to wait before killing
client.killTopologyWithOpts(topology_name, killOpts); //provide topology name

获取拓扑运行状态

Client client = NimbusClient.getConfiguredClient(conf).getClient();
List<TopologySummary> topologyList = client.getClusterInfo.get_topologies();
// loop through the list and check if the required topology name is present in the list
// if not it's not running


 类似资料:
  • 我们有一个不想连续运行storm拓扑的用例。相反,有一组输入(10K+)应该在指定的时间被处理,Spout连续发射这些输入,并得到拓扑中其余螺栓的处理。处理完所有输入后,在我的喷注中就没有任何东西可以从nextTuple发出。 此时,我们希望拓扑进入Hibernate状态,并在每天晚上12:00重新启动进程。 在storm配置中是否有任何属性可以设置为每天运行一次拓扑并在处理完成后Hibernat

  • 在storm Framework中是否有任何预定义的、重写的或任何可用的方法来实现这一点。 提前致谢:)

  • 问题内容: 在终止风暴拓扑之前如何调用特定方法。 我已经在风暴中创建了一个拓扑,我想在拓扑被杀死之前调用特定的方法。 在Storm框架中是否有任何预定义的覆盖或任何可用的方法来做到这一点。 提前致谢:) 问题答案: 哪有这回事… 解决方法是,可以先删除拓扑,然后再取消拓扑。这样可以确保被调用。 如果需要使用螺栓调用方法,请使用来通过整个拓扑发送“通知元组”(不包含要处理的数据)。并且在每个螺栓中,

  • 问题内容: 我正在服务器上运行一个nohup进程。当我尝试杀死它时,我的油灰控制台会关闭。 这是我尝试查找进程ID的方法: 这是杀死的命令 问题答案: 使用并将任务放在后台时,后台运算符()将在命令提示符下为您提供PID。如果您的计划是手动管理该进程,则可以保存该PID,然后在需要时通过或(如果需要强制终止)将其用于终止该进程。或者,您可以稍后找到PID,然后从那里找到PID。请注意,关键字/命令

  • 问题内容: 我在前台启动了我的程序(守护程序),然后用杀死了它,但剩下一个僵尸,无法用杀死它。如何杀死僵尸进程? 如果僵尸是一个死进程(已被杀死),我如何将其从输出中删除? 问题答案: 僵尸已经死了,所以您无法杀死它。要清理僵尸,必须等待其父级等待,因此杀死父级应该可以消除僵尸。(父对象死后,僵尸将被pid 1继承,而pid 1将等待该僵尸并清除其在进程表中的条目。)如果守护程序正在生成成为僵尸的

  • 问题内容: 如何java.lang.Thread用Java 杀死A ? 问题答案: 有关他们为何不赞成使用Sun的内容,请参见此主题。它详细介绍了为什么这是一种不好的方法,以及通常应该采取什么措施才能安全地停止线程。 他们建议的方式是使用共享变量作为标志,要求后台线程停止。然后可以由另一个请求线程终止的对象来设置此变量。