Обеспечить ровно один раз доставку в Кафку Коннект - PullRequest
0 голосов
/ 14 мая 2019

Знаете ли вы, возможно ли это, и если да, каков наилучший способ обеспечить ровно одну доставку в hdfs, используя kafka connect с kafka?

Я знаю, что Kafka Connect пытается найти смещения для своей группы потребителей в "__consumer_offsets", но мне нужна дополнительная проверка, так как дубликаты не принимаются

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

Когда соединитель записывает файлы в HDFS, он сначала записывает во временный файл, WAL для воспроизведения, а затем переименовывает временный файл в конечный файл. Наименование этого окончательного файла имеет смещения, которые присутствуют в этом файле. Поэтому при запуске connect он просматривает 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, чтобы понять больше

0 голосов
/ 14 мая 2019

HDFS Connect уже заявляет о своей поддержке ровно один раз, используя журнал предварительной записи в HDFS. Когда соединение перезапускается, он фактически проверяет этот журнал, если только недавно не изменилась логика, а не тема смещений

...