如何确保Spark结构化流媒体正在处理kafka中的所有数据

问题描述 投票:0回答:1

[我开发了一个Spark结构化的流应用程序,该应用程序从Kafka主题中读取数据,将数据汇总,然后输出到S3。

现在,我正在尝试找到使应用程序正常运行所需的最合适的硬件资源,同时也将成本降到最低。在了解输入大小的情况下,关于如何计算火花簇的正确尺寸的信息很少,我选择了试错法。我以最少的资源部署应用程序并添加资源,直到spark应用程序以稳定的方式运行。

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

谢谢您的回答!

apache-spark apache-kafka spark-structured-streaming
1个回答
0
投票

跟踪卡夫卡消费者滞后。应该为您的Spark流作业创建了Consumer组。

> 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. 将包括卡夫卡消费者滞后在内的所有卡夫卡指标保存到普罗米修斯/石墨
  2. 使用Grafana查询普罗米修斯并将它们绘制在图形上
© www.soinside.com 2019 - 2024. All rights reserved.