java - Storm : eventhub spout stops receiving messages

标签 java azure apache-storm azure-eventhub

目前我正在开发一个 Storm 拓扑来处理原始机器测量数据。但是,我在喷嘴方面遇到了无法解释的问题。

我正在 Azure HDInsight 上运行一个用 Java 编写的简单 Storm 拓扑。事件是从 eventhub 中读取的,我使用的是 microsoft eventhub spout(版本 0.9)。这个eventhub有8个分区,这意味着我还需要8个Eventhubspout实例。

但是,当我运行拓扑几个小时时,spout 会陆续停止接收消息,直到每个 spout 都安静下来。没有给出任何反馈。当我通过其他方式检查 eventhub 时,它仍然正常运行。 Storm/the spouts 根本就不再注册任何东西。

对于这里可能出现的问题,我有几个想法:

  • 首先,最近我们调整了发送到拓扑的消息。通过批处理(以及拓扑本身的解析),我们显着减少了消息量。每条消息的大小也大大增加。这可能会导致两个问题:

    1. 每个分区每 +/- 4 秒才收到一条消息,这对于 Storm 来说低得离谱。难道是因为这个自动超时崩溃了?

    2. 消息“有时”是否太大,导致 spout 崩溃/显示奇怪的行为?

  • 其次,有时可能会由于某些 Azure 错误或网络不可用而导致 eventhub 短暂脱机。这可能意味着 eventhub 在一段时间内不会发送消息。没有接收数据时,spout关闭但无法唤醒?

对于上述每个原因,eventhub spout 不应该自动恢复吗?可以采取什么措施来调试/解决这个问题?

最佳答案

我尝试搜索一些确保自动从异常中恢复 eventhub spout 的代码,但似乎没有任何代码可以执行此操作。

但是,我认为该问题可能是由 Storm 错误引起的,例如 https://issues.apache.org/jira/browse/STORM-329 .

要调试这样的问题,可以尝试引用How to debug Apache Storm in Eclipse?通过在 HDInsight Storm 的工作线程 JVM 中启用调试来在 Eclipse 上进行远程调试。

希望有帮助。谨致问候。

关于java - Storm : eventhub spout stops receiving messages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35381516/

相关文章:

java - 使用 MVC 和 DAO 模式在 JSP 页面中的 HTML 中显示 JDBC 结果集

java - 在 Java 中创建 TableColumn 并将其添加到 JTable

c# - 升级到 EF6 破坏了 Azure 的通用提供程序 session 状态

azure - 如何通过 Azure 逻辑应用程序使用模板将 CSV 转换为 JSON

python - 使用 python 在 Apache Storm Spout 中打开文件

java - Apache Storm 上为 Bolt 添加重试机制

java - 在 netbeans IDE 7.3 中清理并构建后程序无法运行

java - 在Java中用户输入错误输入后防止程序退出的正确方法是什么?

azure - 在 C# 中为 Azure IoT 中心生成 SAS token 所需的参数

c# - HDInsight Storm 事件中心 Spout 仅接收 1024 条消息