2016-03-21 11 views
2

Ich möchte den Entwicklungslebenszyklus von Kafka Connect Modulen verstehen.Kafka Connect Api - Erste Schritte?

Nach http://kafka.apache.org/090/documentation.html#connect möchte ich ein benutzerdefiniertes Kafka-Verbindungsmodul mit dem "Connect API" schreiben, aber ich weiß nicht, wo ich anfangen soll. Gibt es minimale Beispiele dafür? Projekteinrichtung usw.?

Übrigens ich baute dieses https://github.com/confluentinc/kafka-connect-jdbc und versuchte, es (auf Google Cloud) zu laufen, aber ich finde Fehler - eindeutig eine fehlende Abhängigkeit, aber ich weiß nicht, was ich hinzufügen soll. Natürlich könnte es sein, dass dies nur auf einer konfluenten Plattform laufen soll. Wenn es anderswo laufen könnte, dann großartig. Aber wenn es nicht klappen kann, würde ich gerne wissen, wie man eine von Grund auf neu baut, daher meine Frage.

java.lang.NoClassDefFoundError: org/apache/kafka/common/config/ConfigDef$Recommender 
    at io.confluent.connect.jdbc.JdbcSourceConnector.start(JdbcSourceConnector.java:66) 
    at org.apache.kafka.connect.runtime.Worker.addConnector(Worker.java:186) 
    at org.apache.kafka.connect.runtime.standalone.StandaloneHerder.startConnector(StandaloneHerder.java:197) 
    at org.apache.kafka.connect.runtime.standalone.StandaloneHerder.putConnectorConfig(StandaloneHerder.java:145) 
    at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:85) 

Caused by: java.lang.ClassNotFoundException: org.apache.kafka.common.config.ConfigDef$Recommender 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 5 more 

Antwort

2

Die häufigste Ursache für diese Art von Fehlern ist die Konfiguration Ihres CLASSPATH. Damit Kafka Connect Ihre Klassen zur Laufzeit finden kann, müssen Sie sie in Ihren Klassenpfad aufnehmen. Der folgende Text wird direkt aus den documentation of Kafka connect genommen:

Alle, die es benötigt, um ein neues Plugin zu installieren, ist es in dem CLASSPATH des Kafkas Connect-Prozesses zu platzieren. Alle Skripte für die Ausführung von Kafka Connect wird die Umgebungsvariable CLASSPATH verwenden, wenn es gesetzt ist, wenn sie aufgerufen werden, so dass es leicht mit zusätzlichen Stecker Plugins ausführen:

Und wie es zu tun: export CLASSPATH=/path/to/my/connectors/* bin/connect-standalone standalone.properties new-custom-connector.properties

Ich habe auch eine how to guide for Kafka Connect geschrieben, die Sie vielleicht hilfreich finden.

+0

Ja, ich die Dokumentation gelesen hatte und ich den Classpath gesetzt hatte, aber ich bin immer noch Probleme gegenüber. Ich vermutete, dass es vielleicht mehr damit zu tun hatte, die richtigen Abhängigkeiten überhaupt nicht einzubeziehen. Ihr Guide sieht sehr nützlich aus, danke dafür - das ist die Art von Informationen, die ich gesucht habe. – ismisesisko

+0

können Sie bestätigen, dass es möglich ist, diesen JDBC-Connector auf einem neuen System mit nur ZOOKEEPER & KAFKA und der lokal erstellten JAR zu implementieren, oder gibt es andere Dinge, über die Sie sich Sorgen machen müssen? – ismisesisko

+0

müssen Sie auch die Schema-Registrierung ausführen. Der JDBC-Connector verwendet die Schema-Registrierung, um das Schema der Datenbank zu registrieren und Änderungen daran zu verfolgen, z. Löschen einer Tabelle usw. Das Beste, wenn Sie mit Kafka Connect experimentieren möchten, ist das Herunterladen der Distribution von Confluent. Überprüfen Sie die Anleitung [hier] (http://docs.confluent.io/2.0/quickstart.html#quickstart).Sie müssen in Betrieb sein: 1) Zookeeper, 2) Kafka & 3) Schema Registry – cpard

-1

Ich hätte dies als Kommentar hinzugefügt, aber SO gab an, dass ich nicht genügend Punkte hatte. Wie auch immer, der Sinn dieser Antwort besteht darin, zu demonstrieren, dass der JDBC-Konnektor ohne Installation der gesamten Confluent-Paket- und Schemaregistrierung ausgeführt werden kann.

Ich konnte Confluents JDBC-Connector mit laufen ohne die Confluent-Plattform (insbesondere die Schema-Registrierung) zu installieren. Es gibt vier Confluent-Bibliotheken, die Sie im Klassenpfad benötigen, wenn Sie den Connector ausführen (common-config, common-metrics, common-utils und kafka-connect). Weitere detaillierte Anweisungen finden Sie unter https://prefrontaldump.wordpress.com/2016/05/02/using-confluents-jdbc-connector-without-installing-the-entire-platform/

+0

Interessant. Vielen Dank! – ismisesisko