HDInsight Storm 事件中心 Spout 仅接收 1024 条消息
HDInsight Storm Event Hub Spout only receiving 1024 messages
我有一个 HDInsight Storm 群集(默认 60 核设置)
我已经使用了模板工程,正在使用最新的jar依赖(0.9.
4)
昨天我是 运行 应用程序并通过我的事件中心传递了 20,000,000 条消息,没有任何问题。
添加新螺栓后(我现在从 EventHub 接收不同的螺栓)我现在每次(准确)只收到 1024 条消息。
如果我删除我的拓扑并重新部署它,它曾经处理 EventHub 中的所有消息,现在它只处理 1024。
我删除了 azure 中的服务总线命名空间,我重新创建了它,将它扩展到 10 MU,但仍然一次只能处理 1024 条消息。
我能想到的是,这可能与接收者学分有关?
查看 github 上 Java 喷口的 source,您可以看到这一行:
+eventhubs.checkpoint.interval = 10
+eventhubs.receiver.credits = 1024
来自MSDN EventHubCredits 的解释是:
The value for eventhub.receiver.credits determines how many events are
batched before releasing them to the Storm pipeline
好像我只收到过一批。我目前提交了1631条消息,不止一批,但不够两批。
[编辑]
这似乎与 "StormConfig.setMaxSpoutPending" 设置直接相关。我之前将其设置为 100,000,此后一直如此。删除配置它的代码块(如下)并重新部署后,它仍然发生。但是,当我重新添加代码并将 MaxSpoutPending 设置为 500 时,我现在只能获得一批 500 件,不再......
//global config:
var topologyConfig = new StormConfig();
topologyConfig.setMaxSpoutPending(500);
topologyConfig.setNumWorkers(partitionCount);
topologyBuilder.SetTopologyConfig(topologyConfig);
[编辑2]
我在天蓝色中重建了整个集群,并在没有任何 StormConfig 的情况下重新部署了解决方案(我也删除了 HDFS blob 存储,所以这是一个全新安装。我没有删除 table 存储,但我不不认为这是用于 Storm 服务器).. 我回到了 1024(不是以前的 500)条消息,但没有更多了。
检查您的螺栓是否返回确认。 Event Hub Spout 需要 ack,如果没有收到,它将停止接收。
我有一个 HDInsight Storm 群集(默认 60 核设置)
我已经使用了模板工程,正在使用最新的jar依赖(0.9. 4)
昨天我是 运行 应用程序并通过我的事件中心传递了 20,000,000 条消息,没有任何问题。
添加新螺栓后(我现在从 EventHub 接收不同的螺栓)我现在每次(准确)只收到 1024 条消息。
如果我删除我的拓扑并重新部署它,它曾经处理 EventHub 中的所有消息,现在它只处理 1024。
我删除了 azure 中的服务总线命名空间,我重新创建了它,将它扩展到 10 MU,但仍然一次只能处理 1024 条消息。
我能想到的是,这可能与接收者学分有关?
查看 github 上 Java 喷口的 source,您可以看到这一行:
+eventhubs.checkpoint.interval = 10
+eventhubs.receiver.credits = 1024
来自MSDN EventHubCredits 的解释是:
The value for eventhub.receiver.credits determines how many events are batched before releasing them to the Storm pipeline
好像我只收到过一批。我目前提交了1631条消息,不止一批,但不够两批。
[编辑] 这似乎与 "StormConfig.setMaxSpoutPending" 设置直接相关。我之前将其设置为 100,000,此后一直如此。删除配置它的代码块(如下)并重新部署后,它仍然发生。但是,当我重新添加代码并将 MaxSpoutPending 设置为 500 时,我现在只能获得一批 500 件,不再......
//global config:
var topologyConfig = new StormConfig();
topologyConfig.setMaxSpoutPending(500);
topologyConfig.setNumWorkers(partitionCount);
topologyBuilder.SetTopologyConfig(topologyConfig);
[编辑2] 我在天蓝色中重建了整个集群,并在没有任何 StormConfig 的情况下重新部署了解决方案(我也删除了 HDFS blob 存储,所以这是一个全新安装。我没有删除 table 存储,但我不不认为这是用于 Storm 服务器).. 我回到了 1024(不是以前的 500)条消息,但没有更多了。
检查您的螺栓是否返回确认。 Event Hub Spout 需要 ack,如果没有收到,它将停止接收。