flink kafka offset配置

一:flink kafka offset配置


1. setStartFromGroupOffsets(默认的):

example:
Map specificStartOffsets = new HashMap<>();
specificStartOffsets.put(new KafkaTopicPartition("myTopic", 0), 23L);
specificStartOffsets.put(new KafkaTopicPartition("myTopic", 1), 31L);
specificStartOffsets.put(new KafkaTopicPartition("myTopic", 2), 43L);

myConsumer.setStartFromSpecificOffsets(specificStartOffsets);

查看partition offset

kafka-consumer-groups --bootstrap-server xxx:9092 --group groupId  --describe

TOPIC     PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG   CONSUMER-ID                                       HOST            CLIENT-ID
xxx         0          13949           13949           0     xxx-1-25efc288-c534-4b1b-a57b-4cfdce853439         /xxxx           xxx-1
xxx         1          13871           13871           0     xxx-1-25efc288-c534-4b1b-a57b-4cfdce853439         /xxxx           xxx-1
xxx         2          13974           13974           0     xxx-1-25efc288-c534-4b1b-a57b-4cfdce853439         /xxxx           xxx-1
xxx         3          14192           14192           0     xxx-1-25efc288-c534-4b1b-a57b-4cfdce853439         /xxxx           xxx-1
xxx         4          14036           14036           0     xxx-1-25efc288-c534-4b1b-a57b-4cfdce853439         /xxxx           xxx-1
  • 1.1、消费者组在kafka中提交的offsets开始读取partition;

  • 1.2、如果分区中offset没有找到,则使用kafka properties中的auto.offset.reset配置(比如:latest、earliest)


2. setStartFromEarliest()

从最早的记录开始,使用此配置,在kafka中已经提交的offset将被忽略,不会被使用


3. setStartFromLatest()

从最新的开始,使用此配置,在kafka中已经提交的offset将被忽略,不会被使用


4. setStartFromTimestamp(long)

  • 从指定的时间开始消费;
  • 对于每个partition,记录的时间大于等于指定的时间将作为起始消费点;
  • 如果partition的记录时间早于指定时间,则从最近的数据记录开始消费;
  • 此模式下,在kafka中已经提交的offset将被忽略不会作为消费起点。

5. properties配置offset

properties.setProperty(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");

解释:

  • earliest
    当各partition有消费者组已提交的offset时,从提交的offset开始消费;无提交的offset时,从起始开始消费
  • latest
    当各partition下有消费者组已提交的offset时,从提交的offset开始消费;无提交的offset时,消费最新的该partition下的数据
  • none
    topic各partition都存在已提交的offset时,从offset后开始消费;只要有一个分区不存在已提交的offset,则抛出异常

二:kafka消费offset提交配置:


1. checkpoint禁用:

flink kafka消费依赖于内部kafka客户端自动定期的offset提交

配置:enable.auto.commit / auto.commit.interval.ms


2. checkpoint启用:

flink kafka consumer在checkpoint完成时自动提交offset在checkpoint state中;

配置:setCommitOffsetsOnCheckpoints(boolean) 来启用关闭;默认情况下,是开启的true
此模式下,配置在properties中自动周期性的offset提交将被忽略;



链接:https://www.jianshu.com/p/7c8d6f728201
 

Flink Kafka Offset 管理是指在使用 Flink 消费 Kafka 数据流时,如何管理消费的偏移量(offset),以便在出现故障或重新启动应用程序时能够准确地从上次的偏移量继续消费数据。 Flink 支持两种方式来管理 Kafka 偏移量:手动管理和自动管理。 1. 手动管理: 在手动管理模式下,应用程序需要自行跟踪和存储偏移量,并在恢复或重启时将偏移量手动设置为上次记录的偏移量。常见的做法是将偏移量保存在外部存储中,例如 Apache ZooKeeper 或存储系统等。这种方式需要编写一些代码来实现偏移量的跟踪和管理。手动管理模式有较高的灵活性,但需要开发者自行处理更多的细节。 2. 自动管理: 自动管理模式下,Flink 提供了与 Kafka 进行整合的功能,可以自动跟踪和管理每个 Kafka 分区的偏移量。FlinkKafka Connector 提供了可靠的偏移量管理功能,能够自动订阅 Kafka 的特定主题和分区,并在每次消费数据时自动跟踪和记录偏移量。如果应用程序在故障之后重新启动,Flink 会读取最近的保存的偏移量,并从偏移量所在位置继续消费数据。自动管理模式相对简单方便,无需编写额外的代码。 两种模式各有优缺点,选择适合自己应用场景的方式进行偏移量管理。 总之,Flink Kafka Offset 管理是确保在 Flink 应用程序消费 Kafka 数据流时,能够准确地从上次消费的偏移量继续消费数据的一种机制,开发者可以选择手动管理或自动管理模式来实现偏移量的跟踪和管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值