最大喷嘴容量

Maximum spout capacity

我正在使用 Heron 对 IoT 数据执行流分析。目前在架构中只有一个并行度为 1 的 spout。

我正在尝试对 Heron 在 spout 内部使用的队列中可以保存的数据量进行基准测试。

我正在通过向方法 setMaxSpoutPending() 传递值来尝试它。我想知道我们传递给这个方法的数量是否有限制?

我们可以通过增加系统配置或为拓扑提供更多资源来调整参数方法吗?

所以如果你有一个 spout 和一个 bolt,那么 max spout pending 是控制挂起元组数量的最佳方式。 Max Spout pending 可以无限增加。然而,将其增加到一定数量以上会增加发生超时错误的可能性,并且在最坏的情况下可能无法取得进展。此外,更高的 msp 通常需要更多的 spout 和拓扑的其他组件所需的堆。

MSP用于控制拓扑摄取率;它告诉 Storm 在任何给定时间可能未确认的最大元组数。如果 MSP 低于拓扑的并行度,它可能是一个瓶颈。另一方面,将 MSP 增加到超过拓扑并行度级别会导致拓扑 'flooded' 并且无法跟上入站元组。在这种情况下,拓扑的 'message timeout' 将被超出,Storm 将尝试重放它们,同时仍然提供新的元组。仅当达到 MSP 限制时,Storm 才会停止提供新的入站元组。

所以是的,您可以对其进行调整,但请注意超时元组的增加,这表明您的拓扑已不堪重负。

顺便说一句,如果您正在处理 IoT 事件,您可以通过使用字段分组按设备 ID(每个设备的元组流)对 spout 元组进行分组来提高并行度。