【问题标题】:Decreasing max.spout.pending value leads to failed messages in Kafka Spout in Storm UI?减少 max.spout.pending 值会导致 Storm UI 中 Kafka Spout 中的消息失败?
【发布时间】:2019-02-19 14:32:24
【问题描述】:

我们正在尝试对 Storm 拓扑的性能进行基准测试。我们正在以大约 1000/秒的速度将消息摄取到 Kafka 主题。当我们将 max.spout.pendind=2000 放入 KafkaSpout 时,我们在 Storm UI 中看不到任何失败的消息,但是当我们将 max.spout.pendind 的值减小到 500 或 100 时,我们会在 spout 中看到很多失败的消息在风暴用户界面中。我的理解是,如果我们将 max.spout.pending 保持在较低水平,那么我们将不会收到任何失败的消息,因为没有任何东西会超时,但它会以相反的方式表现。我们使用 HDP 2.6.5 版本的 Storm 1.1.0 版本。

我们有一个 Kafka Spout 和两个螺栓。

KafkaSpout Parallelism               - 1
Processing Bolt Parallelism          - 1
Custom Kafka Writer Bolt Parallelism - 1

有人对此有任何想法吗?

【问题讨论】:

    标签: apache-kafka apache-storm hortonworks-data-platform


    【解决方案1】:

    您要做的第一件事是在 Storm UI 上检查延迟的统计信息。您还应该查看螺栓/喷口的加载方式(容量统计)。 与下沉数据的速率相比,元组的发射率真的很高吗? , 当你提到增加挂起的 spout 正在解决问题时,我得到了一个指示。你能提供这些统计信息吗.. 另一个值得探索的部分是增加元组的任务超时时间(看看这是否会导致重放和泛洪拓扑)

    【讨论】:

      【解决方案2】:

      请查看以下拓扑统计数据:

      【讨论】:

      • 将您的答案移至问题部分。
      【解决方案3】:

      这很有趣。你是对的,按照我的步骤缩小问题范围,

      1. 上传 peek load 时拓扑可视化屏幕的屏幕截图。
      2. 检查颜色变为棕色/红色的螺栓。红色表示您的 Bolt 处理记录的时间过长。
      3. 您的 spout/bolt 执行器每秒处理 1K 元组的速度要少得多。
      4. 您使用的机器数量?
      5. 如果元组在“KafkaSpout”中失败,那么大多数时候它意味着超时错误。
      6. 在处理失败的事件元组后找出。

      【讨论】:

        猜你喜欢
        • 2017-02-23
        • 2020-05-01
        • 1970-01-01
        • 2019-10-11
        • 2018-03-01
        • 2018-08-14
        • 1970-01-01
        • 2015-03-13
        • 2017-08-24
        相关资源
        最近更新 更多