storm:eventhub停止接收消息

kyvafyod  于 2021-06-21  发布在  Storm
关注(0)|答案(3)|浏览(439)

目前,我正在开发一个用于处理原始机器测量数据的storm拓扑。然而,我遇到了无法解释的问题与喷口。
我在azurehdinsight上运行一个简单的storm拓扑,用java编写。事件是从eventhub中读取的,我使用的是MicrosoftEventHub喷口(版本0.9)。这个eventhub有8个分区,这意味着我还需要8个eventhubspout示例。
但是,当我运行拓扑几个小时时,喷口会停止接收一个接一个的消息,直到每个喷口都安静下来。没有任何反馈。当我通过其他方法检查eventhub时,它仍然在运行。风暴/喷口不再有任何记录。
对于这里可能出现的问题,我有几个想法:
首先,最近我们调整了发送到拓扑的消息。通过批处理(以及拓扑本身的解析),我们显著减少了消息量。每条消息的大小也大大增加了。这会导致两个问题:
每个分区每+/-4秒只接收一条消息,这对于storm来说是非常低的。会不会因为这个自动超时并崩溃?
信息“有时”会不会太大,导致喷口崩溃/表现出奇怪的行为?
其次,有时会发生eventhub暂时脱机的情况,原因是某些azure错误或网络不可用。这可能意味着eventhub暂时不发送消息。当不接收数据时,喷口关闭但不能再醒来?
对于上述每一个原因,eventhub喷口不应该自动从中恢复吗?如何调试/解决这个问题?

nc1teljy

nc1teljy1#

有没有可能你没有确认元组?如果您没有确认,那么spout会假设消息仍然“挂起”,并且不会尝试从事件中心获取新消息。
你看到喷口有什么错误吗?

disbfnqx

disbfnqx2#

我也遇到过类似的问题,在检查了所有的storm eventhub代码等之后,我意识到至少在storm端没有等待。所以azure eventhub本身肯定有问题。以下内容有助于提高我每分钟从eventhub接收的事件数。azure中的吞吐量单位设置为默认值1。喷口以12/min的速度接收。将吞吐量单位设置为5后,喷口以500/min的速度开始接收。
这是一篇同样的好文章:https://blog.bennymichielsen.be/2015/08/11/scaling-an-azure-event-hub-throughput-units/
如果这对你也有帮助,请告诉我。

wkftcu5l

wkftcu5l3#

我试图搜索一些代码,确保从异常中自动恢复eventhub喷口,但似乎没有任何代码可以做到这一点。
但是,我认为这个问题可能是由风暴虫引起的,比如https://issues.apache.org/jira/browse/storm-329.
要调试这样的问题,可以参考如何在eclipse中调试apachestorm?要在eclipse上进行远程调试,请在hdinsight storm的worker jvm中启用调试。
希望有帮助。致以最诚挚的问候。

相关问题