我正在使用 Heron 对 IoT 数据执行流式分析。目前在架构中只有一个并行度为 1 的 spout。
我正在尝试对 Heron 可以在其内部在 spout 使用的队列中保存的数据量的统计数据进行基准测试。
我通过将值传递给它来玩弄 setMaxSpoutPending() 方法。我想知道我们传递给这个方法的数量是否有限制?
我们可以通过增加系统配置或为拓扑提供更多资源来调整参数方法吗?
我正在使用 Heron 对 IoT 数据执行流式分析。目前在架构中只有一个并行度为 1 的 spout。
我正在尝试对 Heron 可以在其内部在 spout 使用的队列中保存的数据量的统计数据进行基准测试。
我通过将值传递给它来玩弄 setMaxSpoutPending() 方法。我想知道我们传递给这个方法的数量是否有限制?
我们可以通过增加系统配置或为拓扑提供更多资源来调整参数方法吗?
因此,如果您有一个 spout 和一个 bolt,那么 max spout pending 是控制待处理元组数量的最佳方法。Max Spout pending 可以无限增加。然而,将它增加到超过一定数量会增加发生超时错误的可能性,并且在最坏的情况下可能没有前进的进展。此外,更高的 msp 通常需要更多的堆用于 spout 和拓扑的其他组件。
MSP用于控制拓扑摄取率;它告诉 Storm 在任何给定时间可能未被确认的元组的最大数量。如果 MSP 低于拓扑的并行度,则可能是瓶颈。另一方面,将 MSP 提高到超出拓扑并行度级别可能会导致拓扑“泛滥”并且无法跟上入站元组的速度。在这种情况下,拓扑的“消息超时”将被超过,Storm 将尝试重播它们,同时仍然提供新的元组。仅当达到 MSP 限制时,Storm 才会停止提供新的入站元组。
所以是的,你可以调整它,但要注意增加超时元组,这表明你的拓扑已经不堪重负。
顺便说一句,如果您正在处理物联网事件,您可以通过使用字段分组按设备 ID(每个设备的元组流)对喷口元组进行分组来增加并行度。