问题
使用了 Flink-Kafka-Connector(版本1.13.0),使用 FlinkKafkaConsumer 上报了 KafkaLag 指标,但是换成 KafkaSource 却没有任何指标。
原因
通过查阅 JIRA1 发现,Flink-1.13 的 kafka-connector 的新版 KafkaSource 没有上报指标。
修复的版本:1.13.2, 1.14,意思是升级到这两个版本才能上报Kafka相关的指标。
兼容性错误
如果遇到这个问题,则说明 kafka-clients 的版本太低。
Caused by: java.lang.NoSuchMethodError: org.apache.kafka.clients.consumer.KafkaConsumer.committed(Ljava/util/Set;)Ljava/util/Map;
at org.apache.flink.connector.kafka.source.reader.KafkaPartitionSplitReader.acquireAndSetStoppingOffsets(KafkaPartitionSplitReader.java:331) ~[flink-application-xxxx.jar:?]
Flink-Kafka-Connector 和 KafkaClients的兼容性说明
Flink-1.13.2+ 使用的 Kafka API 至少 2.4.1。
- Kafka版本的兼容性未在官方文档中指出。Flink源码中引用的版本是 kafka-clients 2.4.1 。
Flink-1.13.2 使用到新版的KafkaAPI 变更的说明
解决方案
Flink 1.13 的发行版,可以直接使用 1.13.2 的 Flink-kafka-connector。
依据:通过查看 有关源码 FLINK-22766,发现该 Connector 的变更不依赖除 Connector 以外的任何变更,因此可以兼容 Flink-1.13.0。
也可以把 Flink 发行版连同 Connector 直接升级到 Flink-1.13.2,Flink-1.14。
参考链接
Flink 发起的 KafkaSource 提议