当一个代理服务关闭时,卡夫卡消费的异常

问题描述 投票:0回答:0

我们有 3 个节点的 Kafka 生产集群,当复制因子设置为 3

我们注意到以下问题(PIC 1)当其中一个 Kafka 代理服务关闭时

假设 Kafka broker02 宕机了,所有其他代理服务都启动了

我们还验证了相关分区上的 broker leader,我们批准所有 broker leader 都成功分配给所有主题分区,这意味着 down 的 broker 没有分配,但所有其他人都分配给 5 个分区

有趣的是,我们从 Kafka 消费者端得到以下异常

图一

LEADER_NOT_AVAILABLE
ERROR [driver][][] [org.apache.spark.sql.execution.streaming.MicroBatchExecution] Query APP_SOD [id = ba85bb112-8656de-4857c-b7ea-2856bac0dd3e56, runId = 19c908b0-1149-40d3-8e5b-a4918271a65d] terminated with errororg.apache.kafka.common.errors.TimeoutException: Timeout of 60000ms expired before the position for partition battery-topic-for-cars-3 could be determined

我们有主题 - 分区

battery-topic-for-cars
,这个主题有 5 个分区

但是我上面解释的例外情况来自消费者,当其中一位经纪人倒闭时,

众所周知,当我们有 3 个 Kafka broker 时,那么它的正常行为是一个 broker 可以停机,例如进行维护建议

那么我们需要改进什么来避免这种异常?

terminated with errororg.apache.kafka.common.errors.TimeoutException: Timeout of 60000ms expired before the position for partition battery-topic-for-cars-3 could be determined

这里是来自 Kafka 主题的示例,描述了当一个经纪人(在本例中是经纪人 01)宕机时

Topic: battery-topic-for-cars   PartitionCount: 5       ReplicationFactor: 3    Configs: segment.bytes=1073741824,retention.ms=1917196682
        Topic: battery-topic-for-cars   Partition: 0    Leader: 1002    Replicas: 1001,1002,1003        Isr: 1002,1003
        Topic: battery-topic-for-cars   Partition: 1    Leader: 1002    Replicas: 1002,1003,1001        Isr: 1002,1003
        Topic: battery-topic-for-cars   Partition: 2    Leader: 1003    Replicas: 1003,1001,1002        Isr: 1003,1002
        Topic: battery-topic-for-cars   Partition: 3    Leader: 1003    Replicas: 1001,1003,1002        Isr: 1002,1003
        Topic: battery-topic-for-cars   Partition: 4    Leader: 1002    Replicas: 1002,1001,1003        Isr: 1002,1003
        Topic: battery-topic-for-cars   Partition: 5    Leader: 1003    Replicas: 1003,1002,1001        Isr: 1003,1002
apache-kafka kafka-consumer-api
© www.soinside.com 2019 - 2024. All rights reserved.