我使用heron对物联网数据执行流分析。目前在该体系结构中,只有一个平行度因子为1的喷口。我试图对heron在spout内部使用的队列中可以容纳的数据量进行基准测试。我正在使用setmaxspoutpending()方法,将值传递给它。我想知道我们传递给这个方法的次数是否有限制?我们可以通过增加系统配置或为拓扑提供更多资源来调整参数方法吗?
zzwlnbp81#
msp用于控制拓扑摄取率;它告诉storm在任何给定时间可能未确认的最大元组数。如果msp低于拓扑的并行度,它可能是一个瓶颈。另一方面,将msp增加到拓扑并行级别之外会导致拓扑被“淹没”并且无法跟上入站元组。在这种情况下,拓扑的“消息超时”将被超过,storm将尝试重播它们,同时仍然提供新的元组。只有在达到msp限制时,storm才会停止输入新的入站元组。所以,是的,你可以调整它,但要注意增加超时元组,这表明你的拓扑结构已经不堪重负。顺便说一句,如果您正在处理iot事件,那么您可以通过使用字段分组,按照设备id(每个设备的元组流)对喷口元组进行分组,从而提高并行性。
42fyovps2#
因此,如果您有一个spout和一个bolt,那么max spout pending是控制挂起元组数的最佳方法。最大喷口等待可以无限期增加。但是,如果将其增加到一定数量以上,则会增加发生超时错误的概率,并且在最坏的情况下,不可能有向前的进展。另外,更高的msp通常需要更多的堆,用于喷口和拓扑的其他组件。
2条答案
按热度按时间zzwlnbp81#
msp用于控制拓扑摄取率;它告诉storm在任何给定时间可能未确认的最大元组数。如果msp低于拓扑的并行度,它可能是一个瓶颈。另一方面,将msp增加到拓扑并行级别之外会导致拓扑被“淹没”并且无法跟上入站元组。在这种情况下,拓扑的“消息超时”将被超过,storm将尝试重播它们,同时仍然提供新的元组。只有在达到msp限制时,storm才会停止输入新的入站元组。
所以,是的,你可以调整它,但要注意增加超时元组,这表明你的拓扑结构已经不堪重负。
顺便说一句,如果您正在处理iot事件,那么您可以通过使用字段分组,按照设备id(每个设备的元组流)对喷口元组进行分组,从而提高并行性。
42fyovps2#
因此,如果您有一个spout和一个bolt,那么max spout pending是控制挂起元组数的最佳方法。最大喷口等待可以无限期增加。但是,如果将其增加到一定数量以上,则会增加发生超时错误的概率,并且在最坏的情况下,不可能有向前的进展。另外,更高的msp通常需要更多的堆,用于喷口和拓扑的其他组件。