kafka-connect-jdbc: SQLException: нет подходящего драйвера только при использовании распределенного режима

Мы успешно использовали загрузку данных mySQL - kafka с использованием автономного коннектора jdbc, но теперь столкнулись с проблемой при использовании того же самого в распределенном режиме (в качестве службы соединения kafka).

файл connect-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`"}

Банки с коннекторами для заметок размещены на всех узлах соединения, plugin.path одинаков на всех узлах соединения, а служба kafka-connect запущена и работает.

Что мне не хватает? Почему я не могу отправить вызов REST для запуска работника / задачи распределенного подключения для этого конвейера mysql? Это работает абсолютно нормально с автономным режимом. Но выдает ошибку с распределенным режимом.

Пожалуйста помоги!

Спасибо!

1 ответ

Решение

Путем исправления приведенных ниже проблем проблема была решена - 1. Изменены права доступа /usr/share/java/kafka-connect-jdbc/mysql-connector-java-8.0.13.jar к 755 2. Сохраните только / usr / share / Java в пути к плагину 3. Измените мою структуру таблицы SQL, чтобы иметь один первичный ключ и одно свойство столбца с инкрементной природой или отметкой времени.

Я решил проблему, указав 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

Я столкнулся с той же проблемой при подключении к базе данных mysql с помощью kafka с использованием confluent. У меня был установлен ubuntu 16.04. Ниже приведены важные пути.

1-/etc/kafka -Все необходимые файлы свойств kafka, здесь вы найдете автономное соединение и файл распределенных свойств, вы можете редактировать их для загрузки плагинов.

2-/usr/share/java все разъемы находятся здесь.

Коннектор mysql должен быть в /usr/share/java/kafka-connect-jdbc/файл jar, который можно скачать отсюда или проверить наличие других версий. Убедитесь, что права доступа к папке, указанной в пункте 2, подходят.

После выполнения вышеуказанных шагов обязательно перезапустите kafka или в моем случае это было confluent. Я перестал сливаться -confluent stop а потом confluent start.

Ниже приведены внешние ресурсы, которые мне помогли.

Другие вопросы по тегам