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

时间:2016-09-08 02:23:57

标签: apache-storm apache-zookeeper runtimeexception topology

我在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服务器做任何事情,所以我需要一个解决方案来保持拓扑稳定运行。无论如何让拓扑稳定运行或者无论如何都要跳过异常? 或者无论如何都要自动重新提交拓扑?

非常感谢!

1 个答案:

答案 0 :(得分:0)

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

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