Die Task Kafka-connect sink ignoriert die Dateioffset-Speichereigenschaft

8

Ich habe ein merkwürdiges Verhalten bei der Arbeit mit dem Confluent JDBC-Connector. Ich bin mir ziemlich sicher, dass es nicht mit Confluent Stack zusammenhängt, sondern mit Kafka-connect Framework selbst.

Also definiere ich offset.storage.file.filename Eigenschaft als Standard /tmp/connect.offsets und führe meinen Sink Connector aus. Offensichtlich erwarte ich, dass Connector Offsets in der angegebenen Datei behält (es existiert nicht im Dateisystem, aber es sollte automatisch erstellt werden, oder?). Dokumentation sagt:

  

offset.storage.file.filename   Die Datei, in der Connector-Offsets gespeichert werden. Durch das Speichern von Offsets auf der Festplatte kann ein eigenständiger Prozess auf einem einzelnen Knoten gestoppt und gestartet werden und dort fortgesetzt werden, wo er zuvor unterbrochen wurde.

Aber Kafka verhält sich ganz anders.

  1. Es prüft, ob die angegebene Datei existiert.
  2. Das ist es nicht, Kafka ignoriert es einfach und setzt Offsets im Kafka-Thema fort.
  3. Wenn ich die angegebene Datei manuell erstelle, schlägt das Lesen trotzdem fehl (EOFException) und Offsets werden im Thema erneut beibehalten.

Ist es ein Bug oder, wahrscheinlicher, ich verstehe nicht, wie man mit diesen Konfigurationen arbeitet? Ich verstehe den Unterschied zwischen zwei Ansätzen, um Offsets beizubehalten, und der Dateispeicher ist für meine Bedürfnisse bequemer.

    
bsiamionau 06.02.2017, 16:39
quelle

1 Antwort

0

Die Eigenschaft offset.storage.file.filename gilt nur für Mitarbeiter, die im eigenständigen Modus ausgeführt werden. Wenn Sie sehen, dass Kafka Offsets in einem Kafka-Thema beibehalten hat, werden Sie im verteilten Modus ausgeführt. Sie sollten Ihren Connector mit dem bereitgestellten Skript connect-standalone starten. Es gibt eine Beschreibung der verschiedenen Modi hier . Anweisungen zum Ausführen in den verschiedenen Modi sind hier .

    
dawsaw 07.02.2017 13:55
quelle