【发布时间】:2016-11-14 16:51:12
【问题描述】:
我对 Storm 比较陌生,我正在尝试创建一个拓扑,该拓扑将接收一个文件,解析内容,然后运行第三方 API 对该内容进行一些分析。
我有一个拓扑、一个喷口和三个螺栓。基本上,spout 将文件提供给将提取文件内容的第一个 bolt。然后第二个 bolt 运行第三方解析,最后一个 bolt 将所有内容写入 xml 字符串表示。
我已经测试了前两个螺栓按预期工作,但是当我添加最后一个螺栓时问题出现了。似乎第二个螺栓需要很长时间才能运行,并且 Storm 正在超时。第三方代码的执行时间大约需要 37 秒。我一直在读到,Storm 会在 30 秒后使 spout 超时并使其失败。
我一直在日志中看到这个:
17580 [Thread-9-disruptor-executor[3 3]-send-queue] INFO backtype.storm.util - Async loop interrupted!
我尝试使用以下方法在拓扑类中设置我的 TOPOLOGY_MESSAGE_TIMEOUT_SEC 配置:
conf.setMessageTimeoutSecs(300);
但这似乎不起作用。关于如何增加 spout 的超时时间以便有足够的时间来完成执行的任何想法?
【问题讨论】:
-
所以我设法让它有点工作,但我是通过增加 Thread.sleep(90000);我不知道为什么会这样,也不知道将其设置为多少合适的时间。
-
有没有办法在日志中找到超时消息。即使我面临同样的问题,也无法找到此类消息。
标签: java hadoop apache-storm