【问题标题】:How to make sure that spark structured streaming is processing all the data in kafka如何确保 spark 结构化流处理 kafka 中的所有数据
【发布时间】:2020-04-30 01:09:23
【问题描述】:

我开发了一个 Spark 结构化流应用程序,它从 Kafka 主题中读取数据,聚合数据,然后输出到 S3。

现在,我正在努力寻找应用程序正常运行所需的最合适的硬件资源,同时最大限度地降低成本。在知道输入大小的情况下,我几乎没有找到关于如何计算正确大小的 spark 集群的信息,因此我选择了试错策略。我以最少的资源部署应用程序并添加资源,直到 spark 应用程序以稳定的方式运行。

话虽如此,我如何确保 spark 应用程序能够处理其 Kafka 输入中的所有数据,并且该应用程序没有落后?是否有要寻找的特定指标?作业持续时间与触发器处理时间?

感谢您的回答!

【问题讨论】:

    标签: apache-spark apache-kafka spark-structured-streaming


    【解决方案1】:

    跟踪 kafka 消费者滞后。应该为您的 Spark 流式传输作业创建消费者组。

    > bin/kafka-consumer-groups.sh --bootstrap-server broker1:9092 --describe --group test-consumer-group
    
      TOPIC                          PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG        CONSUMER-ID                                       HOST                           CLIENT-ID
      test-foo                       0          1               3               2          consumer-1-a5d61779-4d04-4c50-a6d6-fb35d942642d   /127.0.0.1                     consumer-1
    
    

    如果你有 prometheus 和 Grafhana 等度量保存和绘图工具

    1. 将包括 Kafka 消费者延迟在内的所有 Kafka 指标保存到 prometheus/graphite
    2. 使用 Grafana 查询 prometheus 并将其绘制在图上

    【讨论】:

      猜你喜欢
      • 2019-08-24
      • 2019-10-03
      • 2019-01-14
      • 1970-01-01
      • 1970-01-01
      • 2020-01-31
      • 2018-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多