У меня есть кластер Cloudera с кластеризованной службой Kafka. У меня есть два экземпляра контроллеров Kafka, скажем, C1 и C2.
Когда C1 является активным контроллером, все работает нормально. Когда по какой-то причине C2 становится активным контроллером. Некоторые из отправленных сообщений, отправленных через kafka-console-продюсер, не принимаются kafka-console-consumer (ровно половина отправленных сообщений не принимаются потребителем, одно каждые два сообщения). Я не уверен, что это связано со сменой активного контроллера, и некоторые разделы не могут быть прочитаны.
Кроме того, у меня возникнет другая проблема, если я выключу C1 и оставлю включенным только C2. Если я попытаюсь запустить ранее работающее чтение потока Streamsets из kafka, я получаю сообщение об ошибке «Не удается получить метаданные для темы XXXX». Похоже, что метаданные темы присутствуют только в C1, который в этом сценарии отключен.
Если я открою kafka-console-consumer после выключения первого брокера, я получу следующее исключение:
WARN [console-consumer-16627_node10.agatha-cluster-1515508696963-2e45e6d8-leader-finder-thread]:
Failed to find leader for Set(testD-1, testD-0)
(kafka.consumer.ConsumerFetcherManager$LeaderFinderThread)
kafka.common.KafkaException: fetching topic metadata for topics [Set(testD)]
from broker [ArrayBuffer(BrokerEndPoint(183,110.250.17.242,9092))] failed
Что я делаю не так при попытке использовать кафку с несколькими брокерами?