Flink 消费 Kafka 不提交 offset,可能有以下几个原因: 用户没有设置 flink.kafka.consumer.commit.interval.ms 配置项,或者设置的值太大。用户设置了 flink.kafka.consumer.max.poll.records 配置项,并且这个值小于 flink.kafka.consumer.commit.interval.ms 配置项的值。Flink 集群发生了故障,导致 offset 提交失败。
问题是说在flink执行checkpoint的间隔内,从kafka中拉取到的数据还没有处理完成,导致offset没办法提交,而下一次的checkpoint已经开始了,这样flink会跳过对offset的提交。 后面我为了看flink消费过程中是否提交了offset,写了一个程序,发现flink运行过程中,offset没有任何变化,但是当所有数据都消费完了 offset还是提交了. 这...
FlinkKafkaConsumer 提交消费者的 offset 的行为在 FlinkKafkaConsumerBase open 的时候会设置: @Overridepublicvoidopen(Configuration configuration)throwsException {//determine the offset commit modethis.offsetCommitMode =OffsetCommitModes.fromConfiguration( getIsAutoCommitEnabled(),enableCommitOnCheckpoints,//默认值...
val kafkaSource = new FlinkKafkaConsumer[String]("kafka_offset", new SimpleStringSchema(), prop) // kafkaSource.setCommitOffsetsOnCheckpoints(false) val kafkaProducer = new FlinkKafkaProducer[String]("kafka_offset_out", new SimpleStringSchema(), prop) // kafkaProducer.setWriteTimestampToKafka(t...
是你并发和分区数不一致导致的吧
已经使用了'properties.auto.offset.reset'='earliest',但是没有生效。怀疑是依赖的kafka的connector有bug,将github上1.14.5源码拉取下来GitHub - apache/flink at release-1.14.5,查看源码发现 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-sql-connector-kafka_2.12</artifactId><version>1.1...
Flink 里已经提供了一些绑定的 Connector,例如 kafka source 和 sink,Es sink等。读写 kafka、es、rabbitMQ 时可以直接使用相应 connector 的 api 即可。第二部分会详细介绍生产环境中最常用的 kafka connector。 虽然该部分是 Flink 项目源代码里的一部分,但是真正意义上不算作 Flink 引擎相关逻辑,并且该部分没有...
Checkpointing disabled: 此时,Flink Kafka Consumer依赖于它使用的具体的Kafka client的自动定期提交offset的行为,相应的设置是 Kafka properties中的 enable.auto.commit (或者 auto.commit.enable 对于Kafka 0.8) 以及 auto.commit.interval.ms。 Checkpointing enabled: 在这种情况下,Flink Kafka Consumer会将offset存...
Flink-Kafka Connector 是连接kafka的连接器,负责对接kafka 的读写, 本篇主要介绍kafka consumer 的执行流程与核心设计。 逻辑执行流程 分配当前task消费的partition与起始的offset : 根据从状态中恢复的数据与客户端指定的消费模式, 采取的方式是状态中offset优先, 即从状态中能够找到对应的offset 就使用该offset , 否...
如果开启 checkpoint,这个时候作业消费的 offset 是 Flink 在 state 中自己管理和容错。此时提交 offset 到 kafka,一般都是作为外部进度的监控,想实时知道作业消费的位置和 lag 情况。此时需要 setCommitOffsetsOnCheckpoints 为 true 来设置当 checkpoint 成功时提交 offset 到 kafka。此时 commit offset 的间隔就取决...