确保在 Kafka Connect 中只交付一次
Posted
技术标签:
【中文标题】确保在 Kafka Connect 中只交付一次【英文标题】:Ensure exactly once delivery in Kafka Connect 【发布时间】:2019-10-01 13:36:26 【问题描述】:你知道这是否可能,如果是的话,使用 kafka 与 kafka 连接确保向 hdfs 准确交付一次的最佳方法是什么?
我知道 Kafka 连接尝试在“'__consumer_offsets”中为其消费者组找到偏移量,但我需要额外检查,因为重复是不可接受的
【问题讨论】:
【参考方案1】:HDFS Connect 已经声称通过在 HDFS 中使用预写日志仅支持一次。当重新启动连接时,它实际上会检查该日志,除非最近更改了逻辑,而不是偏移量主题
【讨论】:
你的意思是最新的 HDFS 文件? 有多个文件。有一个日志文件连接 HDFS 上的写入,以及将写入数据的临时和最终文件【参考方案2】:当连接器将文件写入 HDFS 时,它首先写入临时文件,WAL 进行重播,然后将临时文件重命名为最终文件。这个最终文件的命名具有该文件中存在的偏移量。因此,当连接启动时,它会在 HDFS 上查找并找到最新提交的偏移量,该偏移量应保证仅交付一次。如果在 hdfs 中找不到偏移量,那么它会让消费者偏移重置策略。请查看 https://github.com/confluentinc/kafka-connect-hdfs/blob/master/src/main/java/io/confluent/connect/hdfs/DataWriter.java 和 https://github.com/confluentinc/kafka-connect-hdfs/blob/master/src/main/java/io/confluent/connect/hdfs/TopicPartitionWriter.java 以了解更多信息
【讨论】:
以上是关于确保在 Kafka Connect 中只交付一次的主要内容,如果未能解决你的问题,请参考以下文章