Коннектор Debezium Kafka mongodb: ошибка при подключении коннектора kafka к mongodb

Ниже моя конфигурация MongoDB в /etc/kafka/connect-mongodb-source.properties

name=mongodb-source-connector 
connector.class=io.debezium.connector.mongodb.MongoDbConnector 
mongodb.hosts=/remoteserveraddress:27017 
mongodb.name=mongo_conn 
initial.sync.max.threads=1 
tasks.max=1

но ошибка ниже

 ERROR Plugin class loader for connector: 'io.debezium.connector.mongodb.MongoDbConnector' was not found. Returning: org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader@5a058be5 (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:165)

Работает коннектор в автономном режиме.

У меня есть класс mongodbconnector под debezium-debezium-connector-mongodb-1.0.0 / debezium-connector-mongodb-1.0.0.Final.jar

также путь к классам установлен следующим образом

#for CLASSPATH
CLASSPATH=/Users/111111/workspace/KafkaConnect/confluent-5.3.2/debezium-debezium-connector-mongodb-1.0.0/*
export CLASSPATH
PATH=$PATH:/usr/local/sbin
export PATH

Используя путь к плагину, я вижу, что он может зарегистрировать и загрузить все необходимые плагины.

[2020-01-10 08:14:07,916] INFO Scanning for plugin classes. This might take a moment ... (org.apache.kafka.connect.cli.ConnectStandalone:78)
[2020-01-10 08:14:07,942] INFO Loading plugin from: /Users/1111111/workspace/KafkaConnect/confluent-5.3.2/debezium-debezium-connector-mongodb-1.0.0/mongodb-driver-3.11.1.jar (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:241)
[2020-01-10 08:14:08,082] INFO Registered loader: PluginClassLoader{pluginLocation=file:/Users/1111111/workspace/KafkaConnect/confluent-5.3.2/debezium-debezium-connector-mongodb-1.0.0/mongodb-driver-3.11.1.jar} (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:264)
[2020-01-10 08:14:08,083] INFO Added plugin 'org.apache.kafka.connect.connector.policy.AllConnectorClientConfigOverridePolicy' (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:193)
[2020-01-10 08:14:08,083] INFO Added plugin 'org.apache.kafka.connect.connector.policy.PrincipalConnectorClientConfigOverridePolicy' (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:193)
[2020-01-10 08:14:08,083] INFO Added plugin 'org.apache.kafka.connect.connector.policy.NoneConnectorClientConfigOverridePolicy' (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:193)
[2020-01-10 08:14:08,085] INFO Loading plugin from: /Users/1111111/workspace/KafkaConnect/confluent-5.3.2/debezium-debezium-connector-mongodb-1.0.0/debezium-connector-mongodb-1.0.0.Final.jar (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:241)
[2020-01-10 08:14:08,120] INFO Registered loader: PluginClassLoader{pluginLocation=file:/Users/1111111/workspace/KafkaConnect/confluent-5.3.2/debezium-debezium-connector-mongodb-1.0.0/debezium-connector-mongodb-1.0.0.Final.jar} (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:264)
[2020-01-10 08:14:08,121] INFO Added plugin 'io.debezium.connector.mongodb.MongoDbConnector' (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:193)
[2020-01-10 08:14:08,121] INFO Added plugin 'io.debezium.connector.mongodb.transforms.ExtractNewDocumentState' (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:193)
[2020-01-10 08:14:08,121] INFO Added plugin 'io.debezium.connector.mongodb.transforms.UnwrapFromMongoDbEnvelope' (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:193)
[2020-01-10 08:14:08,122] INFO Loading plugin from: /Users/1111111/workspace/KafkaConnect/confluent-5.3.2/debezium-debezium-connector-mongodb-1.0.0/debezium-core-1.0.0.Final.jar (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:241)
[2020-01-10 08:14:08,198] INFO Registered loader: PluginClassLoader{pluginLocation=file:/Users/1111111/workspace/KafkaConnect/confluent-5.3.2/debezium-debezium-connector-mongodb-1.0.0/debezium-core-1.0.0.Final.jar} (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:264)
[2020-01-10 08:14:08,198] INFO Added plugin 'io.debezium.converters.ByteBufferConverter' (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:193)
[2020-01-10 08:14:08,199] INFO Added plugin 'io.debezium.transforms.UnwrapFromEnvelope' (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:193)
[2020-01-10 08:14:08,199] INFO Added plugin 'io.debezium.transforms.ExtractNewRecordState' (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:193)
[2020-01-10 08:14:08,199] INFO Added plugin 'io.debezium.transforms.outbox.EventRouter' (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:193)
[2020-01-10 08:14:08,199] INFO Added plugin 'io.debezium.transforms.ByLogicalTableRouter' (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:193)
[2020-01-10 08:14:08,200] INFO Loading plugin from: /Users/1111111/workspace/KafkaConnect/confluent-5.3.2/debezium-debezium-connector-mongodb-1.0.0/mongo-kafka-0.2-all.jar (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:241)
[2020-01-10 08:14:08,340] INFO Registered loader: PluginClassLoader{pluginLocation=file:/Users/1111111/workspace/KafkaConnect/confluent-5.3.2/debezium-debezium-connector-mongodb-1.0.0/mongo-kafka-0.2-all.jar} (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:264)
[2020-01-10 08:14:08,340] INFO Added plugin 'com.mongodb.kafka.connect.MongoSourceConnector' (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:193)
[2020-01-10 08:14:08,340] INFO Added plugin 'com.mongodb.kafka.connect.MongoSinkConnector' (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:193)
[2020-01-10 08:14:08,341] INFO Loading plugin from: /Users/1111111/workspace/KafkaConnect/confluent-5.3.2/debezium-debezium-connector-mongodb-1.0.0/bson-3.11.1.jar (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:241)
[2020-01-10 08:14:08,373] INFO Registered loader: PluginClassLoader{pluginLocation=file:/Users/1111111/workspace/KafkaConnect/confluent-5.3.2/debezium-debezium-connector-mongodb-1.0.0/bson-3.11.1.jar} (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:264)
[2020-01-10 08:14:08,373] INFO Loading plugin from: /Users/1111111/workspace/KafkaConnect/confluent-5.3.2/debezium-debezium-connector-mongodb-1.0.0/mongodb-driver-core-3.11.1.jar (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:241)
[2020-01-10 08:14:08,465] INFO Registered loader: PluginClassLoader{pluginLocation=file:/Users/1111111/workspace/KafkaConnect/confluent-5.3.2/debezium-debezium-connector-mongodb-1.0.0/mongodb-driver-core-3.11.1.jar} (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:264)

но в конце снова та же проблема

    [2020-01-10 08:40:43,613] ERROR Plugin class loader for connector: 'io.debezium.connector.mongodb.MongoDbConnector' was not found. Returning: org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader@33f2df51 (org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader:165)
[2020-01-10 08:40:43,809] ERROR Stopping after connector error (org.apache.kafka.connect.cli.ConnectStandalone:121)
java.lang.IllegalArgumentException: username can not be null
    at com.mongodb.MongoCredential.<init>(MongoCredential.java:350)
    at com.mongodb.MongoCredential.<init>(MongoCredential.java:344)
    at com.mongodb.MongoCredential.createCredential(MongoCredential.java:169)
    at io.debezium.connector.mongodb.ConnectionContext.<init>(ConnectionContext.java:69)
    at io.debezium.connector.mongodb.MongoDbConnector.validate(MongoDbConnector.java:222)
    at org.apache.kafka.connect.runtime.AbstractHerder.validateConnectorConfig(AbstractHerder.java:313)
    at org.apache.kafka.connect.runtime.standalone.StandaloneHerder.putConnectorConfig(StandaloneHerder.java:192)
    at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:115)
[2020-01-10 08:40:43,810] INFO Kafka Connect stopping (org.apache.kafka.connect.runtime.Connect:66)

вывод> curl localhost: 8083 / connector-plugins

[{"class":"com.mongodb.kafka.connect.MongoSinkConnector","type":"sink","version":"0.2"},{"class":"com.mongodb.kafka.connect.MongoSourceConnector","type":"source","version":"0.2"},{"class":"io.confluent.connect.activemq.ActiveMQSourceConnector","type":"source","version":"5.3.2"},{"class":"io.confluent.connect.elasticsearch.ElasticsearchSinkConnector","type":"sink","version":"5.3.2"},{"class":"io.confluent.connect.ibm.mq.IbmMQSourceConnector","type":"source","version":"5.3.2"},{"class":"io.confluent.connect.jdbc.JdbcSinkConnector","type":"sink","version":"5.3.2"},{"class":"io.confluent.connect.jdbc.JdbcSourceConnector","type":"source","version":"5.3.2"},{"class":"io.confluent.connect.jms.JmsSourceConnector","type":"source","version":"5.3.2"},{"class":"io.confluent.connect.replicator.ReplicatorSourceConnector","type":"source","version":"5.3.2"},{"class":"io.confluent.connect.s3.S3SinkConnector","type":"sink","version":"5.3.2"},{"class":"io.confluent.connect.storage.tools.SchemaSourceConnector","type":"source","version":"5.3.2-ce"},{"class":"io.debezium.connector.mongodb.MongoDbConnector","type":"source","version":"1.0.0.Final"},{"class":"org.apache.kafka.connect.file.FileStr

заранее спасибо


person user837593    schedule 10.01.2020    source источник


Ответы (2)


Прежде всего, проверьте установку вашего плагина с помощью интерфейса REST Kafka Connect (см. Подробности здесь).

Попробуйте установить плагины Kafka Connect, используя механизм plugin path вместо CLASSPATH (подробнее см. документы).

person Iskuskov Alexander    schedule 10.01.2020
comment
спасибо за ваш ответ. Я тоже пробовал с путем к плагину, ниже путь в connect-standalone.properties, а также connect-avro-standalone.properties, все та же проблема, он не может загрузить загрузчик классов плагина для коннектора: ' io.debezium.connector.mongodb.MongoDbConnector ... хотя я вижу, что он может зарегистрировать все необходимые загрузчики в начале журнала из указанного места и добавить плагины. {plugin.path = / Users / 11111111 / workspace / KafkaConnect / confluent- 5.3.2 / debezium-debezium-connector-mongodb-1.0.0} - person user837593; 10.01.2020
comment
Попробуйте plugin.path=/Users/11111111/workspace/KafkaConnect/confluent-5.3.2. Ваши плагины должны быть внутри plugin.path. Например. если у вас два плагина и plugin.path=/opt/connectors, путь первого плагина /opt/connectors/confluentinc-kafka-connect-http-1.0.3/, второй путь /opt/connectors/confluentinc-kafka-connect-jdbc-5.3.1/ - person Iskuskov Alexander; 10.01.2020
comment
@ Iskuskov Alexander - вы правы, когда я изменил путь, он пытается загрузить плагины из каждого каталога внутри confluent- 5.3.2 / ... однако в обоих случаях я вижу, что он может находить и загружать плагины из debezium, я добавил подробные логи в моем первоначальном вопросе .. все та же проблема. - person user837593; 10.01.2020
comment
@ user837593, покажите вывод команды curl localhost:8083/connector-plugins. - person Iskuskov Alexander; 10.01.2020
comment
@ Искусков Александр -Kafka connect останавливается после ошибки коннектора, поэтому порт 8083 недоступен [2020-01-10 08: 40: 43,810] INFO Остановка Kafka Connect (org.apache.kafka.connect.runtime.Connect: 66) [2020- 01-10 08: 40: 43,810] ИНФОРМАЦИЯ Остановка сервера REST (org.apache.kafka.connect.runtime.rest.RestServer: 244) - person user837593; 10.01.2020
comment
Но если я запустил то же самое в распределенном режиме и запустил команду curl, out put будет вставлен под вопрос из-за ограничения char здесь - person user837593; 10.01.2020
comment
Я думаю, ваша проблема в вашей конфигурации: вам нужно установить свойство mongodb.user (см. пример). - person Iskuskov Alexander; 10.01.2020
comment
@ user837593, скажите пожалуйста, вы проверили свой конфиг? - person Iskuskov Alexander; 10.01.2020
comment
Большое спасибо за ваш вклад. Проблем с конфигурацией не было. Проблема заключалась в том, что по умолчанию в коннекторе настроен source = 'admin', а сервер БД, к которому я пытался подключиться, не имел администратора в качестве аутентификации. Похоже, это известная проблема. Я использовал другую тестовую БД без базы данных аутентификации, и это помогло - person user837593; 11.01.2020
comment
@ user837593, отлично! Надеюсь, я был вам полезен! Если мой ответ правильный, проголосуйте и примите его - person Iskuskov Alexander; 11.01.2020

Было две проблемы

  1. Коннектор Debezium имеет жестко запрограммированный источник = 'admin', и нет возможности его перезаписать, а сервер БД, к которому я пытался подключиться, не имел администратора в качестве аутентификации.

  2. Тестовый сервер, который я использовал, был автономным сервером и не имел реплики, поэтому мне пришлось создать реплику и добавить к ней этот сервер. Коннектор Debezium не поддерживает автономные серверы.

person user837593    schedule 11.01.2020
comment
Первый (настраиваемый источник аутентификации) был исправлен в предстоящем выпуске Debezium 1.1.0.Alpha1. - person Gunnar; 14.01.2020