kafka-connect-jdbc : SQLException: 仅在使用分布式模式时没有合适的驱动程序
kafka-connect-jdbc : SQLException: No suitable driver only when using distributed mode
我们已成功使用 mySQL - 使用 jdbc 独立连接器的 kafka 数据摄取,但现在在分布式模式下使用相同连接器时面临问题(如 kafka 连接服务)。
连接-distributed.properties文件-
bootstrap.servers=IP1:9092,IP2:9092
group.id=connect-cluster
key.converter.schemas.enable=true
value.converter.schemas.enable=true
offset.storage.topic=connect-offsets
offset.storage.replication.factor=2
config.storage.topic=connect-configs
config.storage.replication.factor=2
status.storage.topic=connect-status
status.storage.replication.factor=2
offset.flush.interval.ms=10000
plugin.path=/usr/share/java,/usr/share/java/kafka-connect-jdbc
我这里有我的连接器罐-
/usr/share/java/kafka-connect-jdbc
-rw-r--r-- 1 root root 906708 Jul 29 01:18 zookeeper-3.4.13.jar
-rw-r--r-- 1 root root 74798 Jul 29 01:18 zkclient-0.10.jar
-rw-r--r-- 1 root root 5575351 Jul 29 01:18 sqlite-jdbc-3.8.11.2.jar
-rw-r--r-- 1 root root 41203 Jul 29 01:18 slf4j-api-1.7.25.jar
-rw-r--r-- 1 root root 658466 Jul 29 01:18 postgresql-9.4-1206-jdbc41.jar
-rw-r--r-- 1 root root 1292696 Jul 29 01:18 netty-3.10.6.Final.jar
-rw-r--r-- 1 root root 489884 Jul 29 01:18 log4j-1.2.17.jar
-rw-r--r-- 1 root root 211219 Jul 29 01:18 kafka-connect-jdbc-5.0.0.jar
-rw-r--r-- 1 root root 317816 Jul 29 01:18 jtds-1.3.1.jar
-rw-r--r-- 1 root root 87325 Jul 29 01:18 jline-0.9.94.jar
-rw-r--r-- 1 root root 20844 Jul 29 01:18 common-utils-5.0.0.jar
-rw-r--r-- 1 root root 20437 Jul 29 01:18 audience-annotations-0.5.0.jar
-rw-r----- 1 root root 2132635 Nov 11 16:31 mysql-connector-java-8.0.13.jar
我可以 运行 以这种方式 运行 运行脚本的独立模式-
/usr/bin/connect-standalone /etc/kafka/connect-standalone.properties /etc/kafka-connect-jdbc/source-quickstart-mysql.properties
但是当我尝试将 REST API 调用到 运行 分布式模式连接器时,出现错误:
curl -X POST -H "Accept:application/json" -H "Content-Type:application/json" X.X.X.X:8083/connectors/ -d '{"name": "linuxemp-connector", "config": { "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector", "tasks.max": "1", "connection.url": "jdbc:mysql://Y.Y.Y.Y:3306/linux_db?user=groot&password=pwd","table.whitelist": "emp","mode": "timestamp","incrementing.column.name":"empid","topic.prefix": "mysqlconnector-" } }'
错误-
{"error_code":400,"message":"Connector configuration is invalid and contains the following 2 error(s):\nInvalid value java.sql.SQLException: No suitable driver found for jdbc:mysql://Y.Y.Y.Y:3306/linux_db?user=groot&password=pwd for configuration Couldn't open connection to jdbc:mysql://Y.Y.Y.Y:3306/linux_db?user=groot&password=pwd\nInvalid value java.sql.SQLException: No suitable driver found for jdbc:mysql://Y.Y.Y.Y:3306/linux_db?user=groot&password=pwd for configuration Couldn't open connection to jdbc:mysql://Y.Y.Y.Y:3306/linux_db?user=groot&password=pwd\nYou can also find the above list of errors at the endpoint `/{connectorType}/config/validate`"}
注意-
连接器 jar 放置在所有连接节点上,plugin.path 在所有连接节点上都是相同的,并且 kafka-connect 服务已启动并且 运行ning .
我错过了什么?为什么我无法提交 REST 调用以为此 mysql 管道启动分布式连接 worker/task?
这在独立模式下工作得很好。但是在分布式模式下会抛出错误。
请帮忙!
谢谢!
通过修复以下问题,问题得到解决 -
1.Changed 权限 /usr/share/java/kafka-connect-jdbc/mysql-connector-java-8.0.13.jar 到 755
2.Keep 插件路径中只有 /usr/share/java。
3.Change 我的 sql table 结构有一个主键和一列 属性 具有增量性质或时间戳。
我这样解决了为驱动程序指定 CLASSPATH 的问题:
CLASSPATH=/Users/christian/kafka/confluent-5.3.1/share/java/kafka-connect-jdbc/mysql-connector-java-8.0.18.jar connect-standalone.sh worker.properties etc/kafka-connect-jdbc/mysql-jdbc-fp.properties
我在使用 confluent 连接到 mysql 数据库时遇到了同样的问题。
我安装了 ubuntu 16.04。以下是重要路径
1-/etc/kafka
-所有需要的kafka属性文件,在这里你会找到connect-stand-alone和connect distributed properties文件,你可以编辑它们来加载插件。
2-/usr/share/java
所有的连接器都在这里。
mysql 连接器应该在 /usr/share/java/kafka-connect-jdbc/
一个 jar 文件中,可以从 here 下载或检查其他版本。请确保2点中提到的文件夹的权限是合适的。
完成上述步骤后,确保重新启动 kafka
或者在我的情况下是 confluent
。
我停止了 confluent -confluent stop
然后 confluent start
.
以下是帮助我的external resource。
我们已成功使用 mySQL - 使用 jdbc 独立连接器的 kafka 数据摄取,但现在在分布式模式下使用相同连接器时面临问题(如 kafka 连接服务)。
连接-distributed.properties文件-
bootstrap.servers=IP1:9092,IP2:9092
group.id=connect-cluster
key.converter.schemas.enable=true
value.converter.schemas.enable=true
offset.storage.topic=connect-offsets
offset.storage.replication.factor=2
config.storage.topic=connect-configs
config.storage.replication.factor=2
status.storage.topic=connect-status
status.storage.replication.factor=2
offset.flush.interval.ms=10000
plugin.path=/usr/share/java,/usr/share/java/kafka-connect-jdbc
我这里有我的连接器罐-
/usr/share/java/kafka-connect-jdbc
-rw-r--r-- 1 root root 906708 Jul 29 01:18 zookeeper-3.4.13.jar
-rw-r--r-- 1 root root 74798 Jul 29 01:18 zkclient-0.10.jar
-rw-r--r-- 1 root root 5575351 Jul 29 01:18 sqlite-jdbc-3.8.11.2.jar
-rw-r--r-- 1 root root 41203 Jul 29 01:18 slf4j-api-1.7.25.jar
-rw-r--r-- 1 root root 658466 Jul 29 01:18 postgresql-9.4-1206-jdbc41.jar
-rw-r--r-- 1 root root 1292696 Jul 29 01:18 netty-3.10.6.Final.jar
-rw-r--r-- 1 root root 489884 Jul 29 01:18 log4j-1.2.17.jar
-rw-r--r-- 1 root root 211219 Jul 29 01:18 kafka-connect-jdbc-5.0.0.jar
-rw-r--r-- 1 root root 317816 Jul 29 01:18 jtds-1.3.1.jar
-rw-r--r-- 1 root root 87325 Jul 29 01:18 jline-0.9.94.jar
-rw-r--r-- 1 root root 20844 Jul 29 01:18 common-utils-5.0.0.jar
-rw-r--r-- 1 root root 20437 Jul 29 01:18 audience-annotations-0.5.0.jar
-rw-r----- 1 root root 2132635 Nov 11 16:31 mysql-connector-java-8.0.13.jar
我可以 运行 以这种方式 运行 运行脚本的独立模式-
/usr/bin/connect-standalone /etc/kafka/connect-standalone.properties /etc/kafka-connect-jdbc/source-quickstart-mysql.properties
但是当我尝试将 REST API 调用到 运行 分布式模式连接器时,出现错误:
curl -X POST -H "Accept:application/json" -H "Content-Type:application/json" X.X.X.X:8083/connectors/ -d '{"name": "linuxemp-connector", "config": { "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector", "tasks.max": "1", "connection.url": "jdbc:mysql://Y.Y.Y.Y:3306/linux_db?user=groot&password=pwd","table.whitelist": "emp","mode": "timestamp","incrementing.column.name":"empid","topic.prefix": "mysqlconnector-" } }'
错误-
{"error_code":400,"message":"Connector configuration is invalid and contains the following 2 error(s):\nInvalid value java.sql.SQLException: No suitable driver found for jdbc:mysql://Y.Y.Y.Y:3306/linux_db?user=groot&password=pwd for configuration Couldn't open connection to jdbc:mysql://Y.Y.Y.Y:3306/linux_db?user=groot&password=pwd\nInvalid value java.sql.SQLException: No suitable driver found for jdbc:mysql://Y.Y.Y.Y:3306/linux_db?user=groot&password=pwd for configuration Couldn't open connection to jdbc:mysql://Y.Y.Y.Y:3306/linux_db?user=groot&password=pwd\nYou can also find the above list of errors at the endpoint `/{connectorType}/config/validate`"}
注意- 连接器 jar 放置在所有连接节点上,plugin.path 在所有连接节点上都是相同的,并且 kafka-connect 服务已启动并且 运行ning .
我错过了什么?为什么我无法提交 REST 调用以为此 mysql 管道启动分布式连接 worker/task? 这在独立模式下工作得很好。但是在分布式模式下会抛出错误。
请帮忙!
谢谢!
通过修复以下问题,问题得到解决 -
1.Changed 权限 /usr/share/java/kafka-connect-jdbc/mysql-connector-java-8.0.13.jar 到 755 2.Keep 插件路径中只有 /usr/share/java。
3.Change 我的 sql table 结构有一个主键和一列 属性 具有增量性质或时间戳。
我这样解决了为驱动程序指定 CLASSPATH 的问题:
CLASSPATH=/Users/christian/kafka/confluent-5.3.1/share/java/kafka-connect-jdbc/mysql-connector-java-8.0.18.jar connect-standalone.sh worker.properties etc/kafka-connect-jdbc/mysql-jdbc-fp.properties
我在使用 confluent 连接到 mysql 数据库时遇到了同样的问题。 我安装了 ubuntu 16.04。以下是重要路径
1-/etc/kafka
-所有需要的kafka属性文件,在这里你会找到connect-stand-alone和connect distributed properties文件,你可以编辑它们来加载插件。
2-/usr/share/java
所有的连接器都在这里。
mysql 连接器应该在 /usr/share/java/kafka-connect-jdbc/
一个 jar 文件中,可以从 here 下载或检查其他版本。请确保2点中提到的文件夹的权限是合适的。
完成上述步骤后,确保重新启动 kafka
或者在我的情况下是 confluent
。
我停止了 confluent -confluent stop
然后 confluent start
.
以下是帮助我的external resource。