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

在终止风暴拓扑之前如何调用特定方法

诸葛阳成
2023-03-14
问题内容

在终止风暴拓扑之前如何调用特定方法。

我已经在风暴中创建了一个拓扑,我想在拓扑被杀死之前调用特定的方法。

在Storm框架中是否有任何预定义的覆盖或任何可用的方法来做到这一点。

提前致谢:)


问题答案:

哪有这回事…

解决方法是,可以deactivate先删除拓扑,然后再取消拓扑。这样可以确保Spout.deactivate()被调用。

如果需要使用螺栓调用方法,请使用Spout.deactivate()来通过整个拓扑发送“通知元组”(不包含要处理的数据)。并且在每个螺栓中,如果收到“通知元组”,则调用您的特殊方法。

此外,该“通知元组”必须由螺栓转发给其所有前任。您需要确保将“通知元组”发送给每个螺栓的所有并行执行器。为此,使用专用的“通知流”,并通过allGrouping()此蒸汽订阅每个螺栓(除了常规输入流之外)。在每个螺栓中,您需要检查元组是否为通知元组(例如,通过Tuple.getSourceStreamId()

清理完成后,您可以最终终止拓扑。



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

  • 问题内容: 我正在使用Java类向拓扑集群提交拓扑,并且我还计划使用Java类取消拓扑。但是根据storm 文档,以下命令用于终止拓扑,并且没有Java方法(这有正当的理由) 那么从Java类中调用Shell脚本杀死拓扑就可以了吗?还有其他杀死拓扑的方法吗? 另外,如何获取风暴群集中正在运行的拓扑的状态? 问题答案: 要杀死拓扑,您可以尝试以下方法 获取拓扑运行状态

  • 我正在设置flume,但是不确定我们的用例应该使用什么样的拓扑。 我们基本上有两个web服务器,它们能够以每秒2000个条目的速度生成日志。每个条目的大小约为137字节。 目前我们已经使用rsyslog(写入tcp端口),php脚本将这些日志写入其中。我们在每个Web服务器上运行一个本地水槽代理,这些本地代理侦听tcp端口并将数据直接放入hdfs。 所以localhost:tcpport是“水槽源

  • 问题内容: 有没有一种干净的方法可以阻止风暴,而又不使用“ kill XXX”杀死风暴,其中XXX是PID? 我运行“ storm kill topology- name”杀死拓扑,但是在那之后,有没有一种干净的方法来关闭worker,nimbus,supervisor和ui? 我没有从文档中找到与此命令相对应的任何命令:https : //github.com/nathanmarz/storm/

  • 我知道,storm并不能保证kafka主题的总体订购保证,但在许多文档中,storm保证消费/处理消息,并在分区级别维护订单。 我正在寻找一个示例storm拓扑,它使用/处理kafka主题的消息,在kafka分区级别维护消息的顺序。。不是全部订单!!只有分区级别的排序保证。 如果您知道任何示例应用程序,请分享。非常感谢!!

  • 默认情况下,当Storm喷口或螺栓遇到异常时,它会重新启动喷口或螺栓,然后再试一次。是否有任何配置选项使它停止拓扑,也许在N次重复尝试之后?(例如,Hadoop尝试了4次才放弃。) 我有一个Storm拓扑运行了77天,一个螺栓在每个元组上引发一个异常。在这种情况下,我宁愿它失败,这样我就会注意到有问题。