1

我有一个带有集群化 Kafka 服务的 Cloudera 集群。我有两个 Kafka 控制器实例,比如说 C1 和 C2。

当 C1 是活动控制器时,一切似乎都正常。当由于某种原因,C2 成为主动控制器。通过 kafka-console-producer 发送的一些已发送消息没有被 kafka-console-consumer 接收(发送的消息中有一半没有被消费者接收,每两条消息一条)。我不确定这是否是由于活动控制器的更改而无法读取某些分区。

另外,如果我关闭 C1 并且只保持 C2 运行,我还有另一个问题。如果我尝试从 kafka 开始读取以前工作的 Streamsets 流,我会收到错误消息“无法检索主题 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

尝试将kafka与多个经纪人一起使用时我做错了什么?

4

2 回答 2

1

我在其中一个代理的以下配置属性的 IP 地址中有错字:advertised.listeners这导致无法从其他地方访问第二个代理。这导致了两个问题:丢失的消息和获取主题元数据错误

于 2018-01-10T08:09:25.667 回答
0

首先确保两个控制器启动,然后创建一个具有分区 2 和复制因子 2 的新主题

于 2018-01-09T11:59:36.033 回答