【发布时间】: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