【问题标题】:Kafka Consumer not receiving messages if one node of the cluster is down如果集群的一个节点关闭,Kafka Consumer 不会收到消息
【发布时间】:2018-11-04 00:04:07
【问题描述】:

我有一个包含 3 个代理的 Kafka 集群。复制已配置:

offsets.topic.replication.factor = 3

在其中一个经纪人倒闭之前一切正常。然后 Consumer(用 Scala 编写)停止接收消息并开始不断生成以下消息:

2018-05-24 19:59:27 DEBUG Fetcher:425 - 分区 SOMTOPIC-1 的领导者无法获取偏移量,等待元数据刷新

2018-05-24 19:59:27 DEBUG Fetcher:425 - 分区 SOMTOPIC-1 的领导者无法获取偏移量,等待元数据刷新

2018-05-24 19:59:27 DEBUG NetworkClient:640 - 向节点 0 发送元数据请求 {topics=[SOMETOPIC]}

2018-05-24 19:59:27 DEBUG Metadata:180 - 将集群元数据版本 5402 更新为 Cluster(nodes = [kafka-1:9092 (id: 0 rack: null)], partitions = [Partition(topic = SOMETOPIC,partition = 0,leader = none,replicas = [1,],isr = [],Partition(topic = SOMETOPIC,partition = 1,leader = none,replicas = [2,],isr = [],Partition (topic = SOMETOPIC, partition = 2, leader = 0, replicas = [0,], isr = [0,]])

但是,如果我使用 kafka-console-consumer 接收消息,一切正常。请帮忙。

【问题讨论】:

  • 您在使用重新平衡器吗?处理故障情况?我的意思是消费者将如何重新平衡负载?
  • 我是否真的看到了分区没有领导者的日志?
  • 当代理崩溃时,是的,这需要为消费者刷新元数据,因为新代理可能成为分区的领导者等。是否有更多日志?

标签: scala apache-kafka


【解决方案1】:

终于修好了。虽然我设置了offsets.topic.replication.factor = 3,但新主题是使用默认复制因子 1 自动创建的,所以我添加了以下属性来解决我的问题:

default.replication.factor=3

【讨论】:

  • 关于设置属性 default.replication.factor=3 时为什么它开始工作的任何见解。
  • 复制因子为 1 kafka 并且在节点故障后“认为”没有工作副本离开
  • 我猜,虽然默认复制因子应该是 3,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-20
  • 2018-02-09
  • 2019-05-23
  • 2017-02-15
  • 2018-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多