Конфлюэнт Кафка Коннект Докер Контейнер Проблема - PullRequest
0 голосов
/ 05 июля 2018

Я использую следующий докер, создающий фрагмент:

connect:
    image: confluentinc/cp-kafka-connect:latest
    hostname: connect
    container_name: connect
    depends_on:
      - zookeeper
      - kafka
    ports:
      - "8083:8083"
    environment:
      CONNECT_BOOTSTRAP_SERVERS: 'kafka:9092'
      CONNECT_REST_ADVERTISED_HOST_NAME: connect
      CONNECT_GROUP_ID: compose-connect-group
      CONNECT_CONFIG_STORAGE_TOPIC: docker-connect-configs
      CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_OFFSET_FLUSH_INTERVAL_MS: 10000
      CONNECT_OFFSET_STORAGE_TOPIC: docker-connect-offsets
      CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_STATUS_STORAGE_TOPIC: docker-connect-status
      CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
      CONNECT_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_INTERNAL_KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_INTERNAL_VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
      CONNECT_PLUGIN_PATH: /usr/share/java
      CONNECT_ZOOKEEPER_CONNECT: 'zookeeper:2181'

Контейнер запускается нормально, но когда я пытаюсь добавить подключение приемника HDFS через API REST контейнера подключения:

curl -s -X POST -H 'Content-Type: application/json' --data \
@confluent_hdfs.json http://localhost:8083/connectors

Где файл confluent_hdfs.json содержит:

{
  "name": "hdfs-sink",
  "config": {
    "connector.class": "io.confluent.connect.hdfs.HdfsSinkConnector",
    "tasks.max": "1",
    "topics": "test",
    "hdfs.url": "hdfs://localhost:9000",
    "flush.size": "1000",
    "name": "hdfs-sink"
  }
}

Я получаю ответ HTTP 500. Проверка журналов для контейнера соединителя показывает:

WARN /connectors (org.eclipse.jetty.server.HttpChannel)
javax.servlet.ServletException: javax.servlet.ServletException:
org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: 
io/confluent/connect/hdfs/HdfsSinkConnectorConfig

Из проверки этого вопроса я вижу следующее сообщение:

https://github.com/confluentinc/kafka-connect-hdfs/issues/273

Что говорит о том, что путь к плагину был неверным. Однако, насколько я могу судить, я правильно установил / usr / share / java, и я также вижу правильно настроенные символические ссылки, на которые ссылается этот пост.

Далее при выполнении запроса:

curl http://localhost:8083/connector-plugins

Я вижу следующий ответ:

[
{"class":"io.confluent.connect.hdfs.HdfsSinkConnector","type":"sink","version":"4.1.1"},
{"class":"io.confluent.connect.hdfs.tools.SchemaSourceConnector","type":"source","version":"1.1.1-cp1"},
{"class":"org.apache.kafka.connect.file.FileStreamSinkConnector","type":"sink","version":"1.1.1-cp1"},
{"class":"org.apache.kafka.connect.file.FileStreamSourceConnector","type":"source","version":"1.1.1-cp1"}
]

Так что я не совсем уверен, пропустил ли я что-то в файле композиции или что-то еще здесь?

1 Ответ

0 голосов
/ 13 июля 2018

Благодаря dawsaw я поработал над предложенным вами примером и понял, что проблема была в подключаемом плагине-коннекторе, монтировав папку-коннектор как том. К сожалению, я установил разъем в неправильной части контейнера подключения, что, по-видимому, поставило под угрозу способность контейнера работать правильно.

К концу работы у меня было:

connect:
image: confluentinc/cp-kafka-connect:4.1.1
container_name: connect
restart: always
ports:
  - "8083:8083"
depends_on:
  - zookeeper
  - kafka
volumes:
  - $PWD/confluentinc-kafka-connect-rabbitmq-1.0.0-preview:/usr/share/java/confluentinc-kafka-connect-rabbitmq-1.0.0-preview
environment:
  CONNECT_BOOTSTRAP_SERVERS: "kafka:9092"
  CONNECT_REST_ADVERTISED_HOST_NAME: "connect"
  CONNECT_REST_PORT: 8083
  CONNECT_GROUP_ID: "connect"
  CONNECT_CONFIG_STORAGE_TOPIC: connect-config
  CONNECT_OFFSET_STORAGE_TOPIC: connect-offsets
  CONNECT_STATUS_STORAGE_TOPIC: connect-status
  CONNECT_REPLICATION_FACTOR: 1
  CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
  CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
  CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
  CONNECT_KEY_CONVERTER: "org.apache.kafka.connect.storage.StringConverter"
  CONNECT_VALUE_CONVERTER: "org.apache.kafka.connect.json.JsonConverter"
  CONNECT_INTERNAL_KEY_CONVERTER: "org.apache.kafka.connect.json.JsonConverter"
  CONNECT_INTERNAL_VALUE_CONVERTER: "org.apache.kafka.connect.json.JsonConverter"
  CONNECT_PLUGIN_PATH: "/usr/share/java"

Еще раз спасибо за помощь в этом и извинения за скудный фрагмент кода, созданный изначально.

...