如何确保spark structured streaming正在处理kafka中的所有数据
How to make sure that spark structured streaming is processing all the data in kafka
我开发了一个 spark 结构化流应用程序,它从 Kafka 主题读取数据,聚合数据,然后输出到 S3。
现在,我正在尝试找到应用程序正确 运行 所需的最合适的硬件资源,同时还将成本降至最低。关于如何在知道输入大小的情况下计算正确大小的 spark 集群的信息很少,我选择了试错策略。我用最少的资源部署应用程序并添加资源,直到 spark 应用程序 运行s 以稳定的方式运行。
话虽如此,我如何才能确保 spark 应用程序能够处理其 Kafka 输入中的所有数据,并且该应用程序不会落后?是否有特定的指标要查找?作业持续时间与触发器处理时间?
感谢您的回答!
跟踪 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并绘制在图上
我开发了一个 spark 结构化流应用程序,它从 Kafka 主题读取数据,聚合数据,然后输出到 S3。
现在,我正在尝试找到应用程序正确 运行 所需的最合适的硬件资源,同时还将成本降至最低。关于如何在知道输入大小的情况下计算正确大小的 spark 集群的信息很少,我选择了试错策略。我用最少的资源部署应用程序并添加资源,直到 spark 应用程序 运行s 以稳定的方式运行。
话虽如此,我如何才能确保 spark 应用程序能够处理其 Kafka 输入中的所有数据,并且该应用程序不会落后?是否有特定的指标要查找?作业持续时间与触发器处理时间?
感谢您的回答!
跟踪 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并绘制在图上