我正在使用Kafka connect创建一个MQTT Kafka连接。我将从融合站点下载的所有特定于kafka MQTT连接器的jar放入“ / data”文件夹。并相应地更新“ connect-standalone.properties”文件以反映插件路径,即
plugin.path=/opt/kafka_2.11-2.1.1/libs,/data
当我运行Kafka Connect
./connect-standalone.sh ../config/connect-standalone.properties ../config/connect-mqtt-source.properties
我收到以下错误消息:
[2019-07-18 10:26:05,823]信息正在从以下位置加载插件: /data/kafka-connect-mqtt-1.2.1.jar (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:220) [2019-07-18 10:26:05,829]错误由于错误而停止 (org.apache.kafka.connect.cli.ConnectStandalone:128) java.lang.NoClassDefFoundError: com / github / jcustenborder / kafka / connect / utils / VersionUtil 在io.confluent.connect.mqtt.MqttSourceConnector.version(MqttSourceConnector.java:29) 在org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.versionFor(DelegatingClassLoader.java:344)
请注意,“ / data”文件夹中存在“ connect-utils-0.3.140.jar”,用红色下划线突出显示。
现在,如果我在下面制作软链接截图,或从“ / data”文件夹复制所有jar,然后将插件路径更新为:
plugin.path=/opt/kafka_2.11-2.1.1/libs
Kafka连接工作正常。
在第一种情况下为何不起作用的任何帮助,即不同文件夹中的kafka连接器特定的jars
答案 0 :(得分:0)
来自Confluent页面上的Kafka Connect用户指南:
...
Kafka Connect将每个插件相互隔离,以使一个插件中的库不受任何其他插件中的库影响。当混合和匹配来自多个提供程序的连接器时,这一点非常重要。
Kafka Connect 插件是:
- 超级JAR ,在单个JAR文件中包含插件的所有类文件及其第三方依赖项;或
文件系统上的- 一个目录,其中包含该插件的JAR文件及其第三方依赖项。
在这种情况下,您必须将插件jar放在一个文件夹中,例如/data/pluginName
不能直接放在 /data/
更多详细信息可以在这里找到:Installing Plugins