【问题标题】:Maximum spout capacity最大出水口容量
【发布时间】:2017-12-15 21:08:27
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您确定这应该被标记为 Storm/Spark 问题吗?这似乎是关于苍鹭的。
  • @StigRohdeDøssing 但我在添加问题时找不到 Heron 标签:(
  • 对不起,我认为你是对的,似乎没有 Heron 标签。我只是有点困惑为什么这被标记为风暴问题:)

标签: streaming spark-streaming apache-storm iot heron


【解决方案1】:

因此,如果您有一个 spout 和一个 bolt,那么 max spout pending 是控制待处理元组数量的最佳方法。 Max Spout pending 可以无限增加。但是,将其增加到超过一定数量会增加发生超时错误的可能性,并且在最坏的情况下可能没有前进的进展。此外,更高的 msp 通常需要更多的堆用于 spout 和拓扑的其他组件。

【讨论】:

  • 您的回答更多的是寻求澄清,而不是给出问题的实际答案。最好将其作为对问题的评论。
  • @Sanjeev 我在 spout 中接收编码数据(温度)并将其传递给拓扑中的螺栓,以计算解码数据(温度)的移动平均值。我正在对喷口在飞行中可以处理的数据进行一些基准测试。这样我们就可以调整拓扑的资源分配,看看是否有变化
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-12-08
    • 2015-08-19
    • 1970-01-01
    • 2016-06-27
    • 2021-12-02
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多