【问题标题】:HDInsight Storm Event Hub Spout only receiving 1024 messagesHDInsight Storm 事件中心 Spout 仅接收 1024 条消息
【发布时间】:2016-02-02 17:52:10
【问题描述】:

我有一个 HDInsight Storm 集群(默认 60 核设置)

我已经使用了模板项目,并且正在使用最新的 jar 依赖项(0.9. 4)

昨天我正在运行该应用程序,并通过我的事件中心传递了 20,000,000 条消息,没有出现问题。

添加新螺栓后(我现在从 EventHub 接收到不同的螺栓)我现在每次只收到 1024 条消息(确切地说)。

如果我删除我的拓扑并重新部署它,它曾经处理EventHub中的所有消息,现在它只做1024。

我在 azure 中删除了服务总线命名空间,我重新创建了它,将其扩展到 10 MU,但一次仍然只能处理 1024 条消息。

我能想到的只是这可能与接收者的信用有关吗?

查看 github 上 Java spout 的 source,您可以看到这一行:

+eventhubs.checkpoint.interval = 10
+eventhubs.receiver.credits = 1024

来自MSDN EventHubCredits 的解释是:

eventthub.receiver.credits 的值决定了有多少事件 在将它们发布到 Storm 管道之前进行批处理

就好像我只收到过一批。我目前正在提交 1631 条消息,不止一批,但还不够两批。

[编辑] 这似乎与“StormConfig.setMaxSpoutPending”设置直接相关。我之前已将其设置为 100,000,此后一直在发生这种情况。在删除配置它的代码块(如下)并重新部署后,它仍然发生。但是当我重新添加代码并将 MaxSpoutPending 设置为 500 时,我现在只能得到一批 500 并且没有更多...

//global config:
var topologyConfig = new StormConfig();
topologyConfig.setMaxSpoutPending(500);
topologyConfig.setNumWorkers(partitionCount);
topologyBuilder.SetTopologyConfig(topologyConfig);

[编辑2] 我在 azure 中重建了整个集群,并在没有任何 StormConfig 的情况下重新部署了解决方案(我也删除了 HDFS blob 存储,所以它是全新安装。我没有删除表存储,但我不认为用于 Storm 服务器).. 我又回到了 1024 条(不是之前的 500 条)消息,但没有更多了。

【问题讨论】:

    标签: c# .net azure apache-storm azure-hdinsight


    【解决方案1】:

    检查您的螺栓是否正在返回确认。事件中心 Spout 需要确认,如果没有收到,它将停止接收。

    【讨论】:

    • 谢谢拉里,这就是问题所在。我有两个螺栓从 EventHubSpout 上脱落,其中一个没有确认它收到的元组,因此我只得到了一批。
    猜你喜欢
    • 1970-01-01
    • 2018-08-14
    • 2017-02-23
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 2019-10-11
    相关资源
    最近更新 更多