【问题标题】: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 等度量保存和绘图工具
- 将包括 Kafka 消费者延迟在内的所有 Kafka 指标保存到 prometheus/graphite
- 使用 Grafana 查询 prometheus 并将其绘制在图上