Производитель и потребитель Kafka на отдельных компьютерах не общаются - PullRequest
0 голосов
/ 18 мая 2018

Я использую kafka_2.11-1.1.0.Это мой файл server.properties:

broker.id=1
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=192.168.1.110:2181,192.168.1.64:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0

На втором компьютере broker.id = 2.Я получил номера ip для строки zookeeper.connect, введя ipconfig в командную строку и используя IPv4-адрес под адаптером Ethernet для локального подключения на одном компьютере и IPv4-адрес под адаптером беспроводной локальной сети Wi-Fi для другого.

Я выполнил эти команды на каждом компьютере (всем, кто следует, запустите первый на обоих компьютерах перед запуском второго):

bin\windows\zookeeper-server-start.bat config\zookeeper.properties
bin\windows\kafka-server-start.bat config\server.properties

На первом компьютере я создал тему и создал продюсера.console:

bin\windows\kafka-topics.bat --create --zookeeper 192.168.1.110:2181 --replication-factor 2 --partitions 1 --topic test
bin\windows\kafka-console-producer.bat --broker-list 192.168.1.110:2181 --topic test

На втором я запустил консоль потребителя:

bin\windows\kafka-console-consumer.bat --bootstrap-server 192.168.1.64:2181 --topic test

Когда я попытался отправить сообщение, потребитель не получил его.Серверная консоль zookeeper на каждом компьютере перебирала следующие сообщения, но каждое значение IP соответствовало соответствующему ПК, а номер порта увеличивался на единицу с каждым циклом (примерно раз в секунду):

INFO Accepted socket connection from /192.168.1.110:55371 (org.apache.zookeeper.server.NIOServerCnxnFactory)
WARN Exception causing close of session 0x0 due to java.io.EOFException (org.apache.zookeeper.server.NIOServerCnxn)
INFO Closed socket connection for client /192.168.1.110:55371 (no session established for client) (org.apache.zookeeper.server.NIOServerCnxn)

В консоли производителя эта ошибка была получена через минуту:

ERROR Error when sending message to topic test with key: null, value: 6 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.

Как это исправить?Любая помощь будет оценена.

ОБНОВЛЕНИЕ - РЕШЕНО - любезно предоставлено Виктором:

Изменение:

bin\windows\kafka-console-producer.bat --broker-list 192.168.1.110:2181 --topic test

и

bin\windows\kafka-console-consumer.bat --bootstrap-server 192.168.1.64:2181 --topic test

Кому:

bin\windows\kafka-console-producer.bat --broker-list 192.168.1.110:9092 --topic test

и

bin\windows\kafka-console-consumer.bat --bootstrap-server 192.168.1.64:9092 --topic test

ОБНОВЛЕНИЕ 2

Для всех, кто выполняет следующие действия, настроить два компьютера сКафка - я обнаружил, что этот метод не всегда работает.Постоянное решение, которое я позже нашел, состояло в том, чтобы использовать один и тот же IP для обоих компьютеров.Я использовал IP-адрес компьютера с Ethernet-соединением, который оказался тем же, что и у производителя.

1 Ответ

0 голосов
/ 19 мая 2018

Я считаю, что вы должны передать производителю список брокеров Kafka, а не кворум Zookeeper:

Так что измените это:

bin\windows\kafka-console-producer.bat --broker-list 192.168.1.110:2181

На что-то вроде этого:

bin\windows\kafka-console-producer.bat --broker-list 192.168.1.110:9092

(я предполагаю, что вы используете там свой сервер Kafka)

Я получил похожую ошибку при записи в Kafka с помощью Spark Streaming:

Ошибка подключения кZookeeper со структурированным Spark Streaming

...