[我开发了一个Spark结构化的流应用程序,该应用程序从Kafka主题中读取数据,将数据汇总,然后输出到S3。
现在,我正在尝试找到使应用程序正常运行所需的最合适的硬件资源,同时也将成本降到最低。在了解输入大小的情况下,关于如何计算火花簇的正确尺寸的信息很少,我选择了试错法。我以最少的资源部署应用程序并添加资源,直到spark应用程序以稳定的方式运行。
话虽如此,我如何确保spark应用程序能够处理其Kafka输入中的所有数据,并且该应用程序没有落后?有没有要寻找的特定指标?作业持续时间与触发器处理时间?
谢谢您的回答!
跟踪卡夫卡消费者滞后。应该为您的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