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