Storm:如何在发生异常时自动重新提交拓扑?

Storm: How to resubmit topology automatically when it occurs exception?

我在 Storm 集群上有一个拓扑 运行,有 3 个主管节点(每个节点 32GRAM)。前几天,拓扑很顺利,一切正常。但是总是出现以下错误,几天后拓扑就崩溃了运行:

java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /brokers/topics/TOPICNAME/partitions at storm.kafka.ZkCoordinator.refresh

拓扑使用 spout 来消费来自位于远程服务器上的远程 Kafka 服务的消息,该服务器也是 zookeeper 服务。

我猜这个异常的原因是zookeeper服务器不稳定,或者网络连接不稳定

我无权对远程 kafka/zookeeper 服务器执行任何操作,因此我需要一个解决方案来保持拓扑 运行 稳定。无论如何让拓扑稳定运行或者无论如何在它出现时跳过异常? 或者有没有自动重新提交拓扑?

非常感谢!

您应该做的第一件事是 google for what causes the connection loss error
然后去storm的日志文件查看是哪一行代码出错了
正确的做法是找出导致错误的原因。

但是,如果您想要更快的临时解决方案,请使用 Storm's REST API 终止拓扑。然后您可以使用普通的 Java 程序或任何语言的脚本从命令行重新启动拓扑。