2016-03-21 183 views
2

我想了解Kafka連接模塊的開發生命週期。Kafka Connect Api - 入門?

以下http://kafka.apache.org/090/documentation.html#connect,我想寫一個使用「連接API」的自定義Kafka連接模塊,但我不知道從哪裏開始。有沒有什麼簡單的例子來說明如何做到這一點?項目設置等?

順便提一句,我建立了這一個https://github.com/confluentinc/kafka-connect-jdbc,並試圖運行它(在谷歌雲上),但我發現錯誤 - 顯然是缺少的依賴項,但我不知道要添加什麼。當然,這可能只是應該在融合的平臺上運行。如果它可以在其他地方運行,那麼很棒但如果它不能,我想知道如何從頭開始建立一個,因此我的問題。

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 

回答

2

這種錯誤最常見的原因是CLASSPATH的配置。對於Kafka Connect在運行時查找您的類,您需要將它們包含在類路徑中。下面的文本直接取自documentation of Kafka connect

所有這一切都需要安裝一個新的插件是將其放置在卡夫卡連接進程的CLASSPATH。所有腳本運行卡夫卡連接將使用CLASSPATH環境變量,如果它被設置在被調用時,因此很容易與附加連接器的插件運行:

而如何做到這一點: export CLASSPATH=/path/to/my/connectors/* bin/connect-standalone standalone.properties new-custom-connector.properties

我還寫了一個how to guide for Kafka Connect,你可能會發現有幫助。

+0

是的,我已經閱讀文檔,我不得不設置類路徑,但我仍然有問題。我猜想,也許這與更多的不涉及正確的依賴關係有關。你的指南看起來非常有用,謝謝你 - 這是我正在尋找的信息。 – ismisesisko

+0

您是否可以確認可以在只有ZOOKEEPER&KAFKA和本地構建的JAR的處女系統上部署該JDBC連接器,還是有其他需要擔心的事情? – ismisesisko

+0

您還需要運行架構註冊表。 JDBC連接器使用模式註冊表來註冊數據庫的模式並跟蹤其變化,例如刪除一個表格等。如果您想試用Kafka Connect,最好的做法是從Confluent下載發行版。檢查指南[這裏](http://docs.confluent.io/2.0.1/quickstart.html#quickstart)。您需要啓動並運行:1)Zookeeper,2)Kafka&3)架構註冊表 – cpard

-1

本來可以添加這個作爲評論,但是SO表示我沒有足夠的分數。無論如何,這個答案的目的是證明JDBC Connector可以在不安裝整個Confluent包和模式註冊表的情況下運行。

我能夠在不安裝Confluent平臺(特別是模式註冊表)的情況下運行Confluent的JDBC連接器。運行連接器時,您需要在類路徑中使用四個Confluent庫(common-config,common-metrics,common-utils和kafka-connect)。有關更詳細的說明,請參閱https://prefrontaldump.wordpress.com/2016/05/02/using-confluents-jdbc-connector-without-installing-the-entire-platform/

+0

有趣。謝謝! – ismisesisko