我有一个hdinsight storm群集(默认60核设置)
我已经使用了模板项目,并且正在使用最新的jar依赖项(0.9)。4)
昨天我运行应用程序,通过我的事件中心传递了20000000条消息,没有问题。
在添加了一个新的bolt(我现在从eventhub接收了一个不同的bolt)之后,我现在每次只接收1024条消息(准确地说)。
如果我删除我的拓扑并重新部署它,它以前会处理eventhub中的所有消息,现在它只处理1024条消息。
我已经删除了azure中的服务总线名称空间,重新创建了它,并将其扩展到10mu,仍然一次只能处理1024条消息。
我所能想到的是,这有可能与收信人的信用有关?
查看github上java喷口的源代码,您可以看到以下行:
+eventhubs.checkpoint.interval = 10
+eventhubs.receiver.credits = 1024
msdn对事件的解释是:
eventhub.receiver.credits的值确定在将事件发布到storm管道之前批处理多少个事件
好像我只收到一批。我目前提交1631条信息,超过一批,但不够两批。
[编辑]这似乎与“stormconfig.setmaxpoutpending”设置直接相关。我以前把它设为100000,从那以后就一直这样。在删除了配置这个的代码块(如下)并重新部署之后,仍然发生了这种情况。但是当我把代码加回去,把maxpoutpending设置为500的时候,我现在只得到一批500,再也没有了。。。
//global config:
var topologyConfig = new StormConfig();
topologyConfig.setMaxSpoutPending(500);
topologyConfig.setNumWorkers(partitionCount);
topologyBuilder.SetTopologyConfig(topologyConfig);
[edit2]我在azure中重建了整个集群,并在没有任何stormconfig的情况下重新部署了解决方案(我也删除了hdfs blob存储,所以这是一个新的安装)。我没有删除表存储,但我不认为它用于storm服务器)。。我又回到1024条(不是之前的500条)信息,但没有更多。
1条答案
按热度按时间u91tlkcl1#
检查螺栓是否回正。事件中心spout需要ack,如果没有得到它们,它将停止接收。