当前位置: 首页 > 知识库问答 >
问题:

如何让暴风雨异常停止?

段超
2023-03-14

默认情况下,当Storm喷口或螺栓遇到异常时,它会重新启动喷口或螺栓,然后再试一次。是否有任何配置选项使它停止拓扑,也许在N次重复尝试之后?(例如,Hadoop尝试了4次才放弃。)

我有一个Storm拓扑运行了77天,一个螺栓在每个元组上引发一个异常。在这种情况下,我宁愿它失败,这样我就会注意到有问题。

共有1个答案

盖锦程
2023-03-14

没有停止拓扑的选项(当前)。老实说,仅仅因为一个异常是蛮力IMHO就杀死了整个拓扑。

在您的场景中,这些异常应该在应用程序层中处理。

是否有任何配置选项使它停止拓扑,也许在N次重复尝试之后?

对此没有现成的解决方案,但您可以这样做,并在喷口中跟踪重试的元组。如果满足阈值,则记录元组或将其发送到消息队列。

我有一个Storm拓扑运行了77天,一个螺栓在每个元组上引发一个异常。

那也许你的Bolt代码里有个bug?

一种策略是将失败的元组发送到按摩队列或事件总线(如HornetQ、Apache Kafka、Redis),并有一个监听器,这样您就会立即收到有毒元组的通知。

 类似资料:
  • 我试图使Kafka消费者同步消费Kafka的消息。 我遇到的实际问题是消息队列存储在Storm Spout中。 我想做的是让暴风雪等待Kafka的回复,然后让暴风雪消耗下一条信息。 我正在使用Storm KafkaSpout: 我已经更新到Storm 2.0.0,我使用Storm kafka客户端。但是如果我将Storm队列配置为50:

  • 我有一个EvaluationBolt(用于内存监视),我希望确保每个工作进程上运行一个执行器(在我的例子中,每个物理节点运行一个执行器,即supervisor.slots.ports只配置为端口6700)。在题目上我发现了这个问题: 干杯,孙铁麟

  • 我在Apache/Storm/external/storm-kafka-client中使用Storm Kafka Spout的storm-kafka-client和新的Kafka Consumer API。我的拓扑如下所示: 当我将kafkaspout.java更改为打印consumerRecords的偏移量时,我发现跳过了一些偏移量。跳过http://7xtjbx.com1.z0.glb.clo

  • 利用 cocos2d 制作的一款休闲游戏。游戏中有九种不同的卡通水果,您可以拖动整行或整列上的水果,或交换屏幕中两个相邻水果的位置,一条直线上的三个或三个以上的相同水果将会消失,而您将得到分数。当您的分数逐步提高后,将会进入更高难度的关卡,接受更高难度的挑战。 游戏中允许使用一些道具。 [Code4App.com]

  • 当我添加水平进度条时,它的行为和预期的一样——我设置了进度值并显示了它。 但是,当我添加ProgressBar(圆形)时,它会旋转。就这样。在这种形式下,更多的是“请等待”指示器,即任何进度条,因为没有显示进度值。 所以我的问题是(假设名义上的进步意味着进步)——如何停止旋转并显示进步的价值?例如,如果我将max设置为100,将value设置为50,我希望看到半圆弧。 换句话说,如何使圆形的Pro

  • 看下这个段伪代码: local value = get_from_cache(key) if not value then value = query_db(sql) set_to_cache(value, timeout = 100) end return value 看上去没有问题,在单元测试情况下,也不会有异常。 但是,进行压力测试的时候,你会发现,每隔 100 秒,数据库的