Состояние задачи коннектора не удается подключиться

Состояние задачи соединителя сбой с ошибкой:

org.apache.kafka.connect.errors.ConnectException: java.lang.NoClassDefFoundError

Я запускаю кластер подключения kafka в распределенном режиме, и я использую подключение kafka (0.10.0.2.5) для развертывания амбари.

Я указал путь к соединителю debezium mysql, используя команду export CLASSPATH = / path to connector /.

Конфигурация соединителя загружена в Kafka Connect с помощью следующей команды:

curl -i -X POST -H "Accept:application/json" \ 
    -H  "Content-Type:application/json" http://localhost:8083/connectors/ \
    -d '{
      "name": "MYSQL_CONNECTOR",
      "config": {
            "connector.class": "io.debezium.connector.mysql.MySqlConnector",
            "database.hostname": "10.224.21.36",
            "database.port": "3306",
            "database.user": "root",
            "database.password": "shobhna",
            "database.server.id": "1",
            "database.server.name": "demo",
            "database.history.kafka.bootstrap.servers": "slnxhadoop04.noid.in:6669",
            "database.history.kafka.topic": "dbhistory.demo" ,
            "include.schema.changes": "true"
       }
    }'

Теперь, после проверки состояния разъема, я получаю сообщение об ошибке:

 - {"name":"MYSQL_CONNECTOR","connector":{"state":"RUNNING","worker_id":"172.26.177.115:8083"},
   "tasks":[{"state":"FAILED","trace":"org.apache.kafka.connect.errors.ConnectException:
   java.lang.NoClassDefFoundError:
   org/apache/kafka/clients/admin/AdminClient\n\tat
   io.debezium.connector.mysql.MySqlConnectorTask.start(MySqlConnectorTask.java:218)\n\tat
   io.debezium.connector.common.BaseSourceTask.start(BaseSourceTask.java:45)\n\tat
   org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:137)\n\tat
   org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:140)\n\tat
   org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:175)\n\tat
   java.util.concurrent.Executors$RunnableAdapter.cal(Executors.java:511)\n\tat
   java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat
   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n\tat
   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat
   java.lang.Thread.run(Thread.java:745)\nCaused by:
   java.lang.NoClassDefFoundError:
   org/apache/kafka/clients/admin/AdminClient\n\tat
   io.debezium.relational.history.KafkaDatabaseHistory.initializeStorage(KafkaDatabaseHistory.java:336)\n\tat
   io.debezium.connector.mysql.MySqlSchema.intializeHistoryStorage(MySqlSchema.java:260)\n\tat
   io.debezium.connector.mysql.MySqlTaskContext.initializeHistoryStorage(MySqlTaskContext.java:194)\n\tat
   io.debezium.connector.mysql.MySqlConnectorTask.start(MySqlConnectorTask.java:126)\n\t...
   9 more\nCaused by: java.lang.ClassNotFoundException:
   org.apache.kafka.clients.admin.AdminClient  \n\tat
   java.net.URLClassLoader.findClass(URLClassLoader.java:381)\n\tat
   java.lang.ClassLoader.loadClass(ClassLoader.java:424)\n\tat
   sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)\n\tat
   java.lang.ClassLoader.loadClass(ClassLoader.java:357)\n\t

person shobhna    schedule 27.08.2018    source источник
comment
Вставьте и включите ошибку в свой вопрос вместо того, чтобы прикреплять снимок экрана.   -  person Giorgos Myrianthous    schedule 27.08.2018


Ответы (1)


Он не может найти встроенный класс Kafka, а не ваш коннектор

NoClassDefFoundError: org / apache / kafka / clients / admin / AdminClient

...

я использую кафку (0.10.0.2.5)

Убедитесь, что вы используете 1) версию Connect Server, соответствующую вашему брокеру Kafka 2) используя Connector, который использует код для этой версии Connect.

Например, AdminClient существует только в Kafka 0.11+.

В последних выпусках HDP вы получаете Kafka 1.1 (отличается от 0.11), и это версия, в которой последний Debezium построен и протестирован на https://debezium.io/docs/releases/

Debezium нужен AdminClient для создания и регистрации информации о теме, поэтому я не уверен, будет ли он работать в старой версии, такой как 0.10.

В вики Kafka сказано, что новые версии Connect Server могут связываться со старыми брокерами, но протокол, используемый классами Connector, является предметом обсуждения.

person OneCricketeer    schedule 28.08.2018
comment
Да, попробуйте Kafka 0.11 или новее. Я полагаю, это работает, хотя в последнее время мы ограничили тестирование 1.x. Мы также можем обойти отсутствие AdminClient при условии, что необходимые темы были созданы ранее вручную. Не стесняйтесь создавать для этого задачу JIRA. В общем, на данный момент мы сосредоточены на Kafka ›= 1.0, но если это не слишком много усилий, мы могли бы применить это изменение. - person Gunnar; 29.08.2018
comment
Спасибо @Gunnar - Не стесняйтесь создавать JIRA от моего имени. - person OneCricketeer; 29.08.2018
comment
LOL, хорошо сыграно;) Отправлен DBZ-883 для отслеживания этого требования. - person Gunnar; 30.08.2018