Kafka启动FileStreamSource连接器提示找不到实现类报错排查
故障根因
Kafka Connect的插件加载逻辑不识别两种plugin.path配置:
- 直接指向单个jar文件的路径
- 直接指向存放所有核心依赖的
libs根目录
插件扫描器只会遍历plugin.path配置路径下的一级子目录,将每个子目录内的jar包作为独立插件做隔离加载。之前的两种配置都无法让扫描器识别到文件连接器,从报错输出的可用连接器列表也能验证:当前仅加载到classpath下内置的Mirror连接器、测试工具连接器,FileStream相关连接器完全未被扫描到。
修复操作
- 在Kafka根目录下创建独立的插件存放根目录:
mkdir -p /home/ben/kafka/kafka_2.12-3.2.0/connect/plugins
- 为文件连接器创建专属子目录,将对应jar包拷贝到该子目录下:
mkdir /home/ben/kafka/kafka_2.12-3.2.0/connect/plugins/file-connector cp /home/ben/kafka/kafka_2.12-3.2.0/lib/connect-file-3.2.0.jar /home/ben/kafka/kafka_2.12-3.2.0/connect/plugins/file-connector/
- 修改
config/connect-standalone.properties中的plugin.path配置,指向插件根目录:
plugin.path=/home/ben/kafka/kafka_2.12-3.2.0/connect/plugins
注意:此处只需要填写插件根目录路径即可,不需要写到具体子目录或具体jar包,扫描器会自动遍历根目录下所有子目录加载插件
- 彻底停止所有残留的ZooKeeper、Kafka Broker、Connect进程后,重新执行启动命令:
bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties config/connect-file-sink.properties
校验排查
如果执行上述操作后仍然报错,做以下两项检查:
- 执行以下命令确认jar包内包含目标连接器类:
jar tf /home/ben/kafka/kafka_2.12-3.2.0/connect/plugins/file-connector/connect-file-3.2.0.jar | grep FileStream
正常输出应包含org/apache/kafka/connect/file/FileStreamSourceConnector.class、org/apache/kafka/connect/file/FileStreamSinkConnector.class两个类文件。
- 检查
connect-file-source.properties、connect-file-sink.properties中的connector.class配置,建议直接写全类名org.apache.kafka.connect.file.FileStreamSourceConnector、org.apache.kafka.connect.file.FileStreamSinkConnector,避免短类名匹配失败。
内容的提问来源于stack exchange,提问作者BenW
相关产品推荐
相关产品推荐

