【问题标题】:Kafka Stream - CommitFailedException: Commit cannot be completed since the group has already rebalanced and assigned the partitions to another memberKafka Stream - CommitFailedException:提交无法完成,因为该组已经重新平衡并将分区分配给另一个成员
【发布时间】:2018-01-17 15:16:12
【问题描述】:

我正在运行一个 Kafka Stream 应用程序,它使用来自 2 个主题的数据并将连接/合并的结果输出到 3 个主题中。 kafka 主题有 15 个分区和 3 个复制因子。我们有 5 个卡夫卡经纪人和 5 个动物园管理员。 我正在运行 15 个 Kafka Stream 应用程序实例,因此每个应用程序可以有 1 个分区。 Kafka 版本 - 0.11.0.0

我在我的 kafka 流应用程序中遇到以下异常:

org.apache.kafka.clients.consumer.CommitFailedException: 提交不能 已完成,因为该组已经重新平衡并分配了 分区到另一个成员。这意味着之间的时间 对 poll() 的后续调用比配置的要长 max.poll.interval.ms,这通常意味着轮询循环是 花费太多时间处理消息。您可以解决这个问题 通过增加会话超时或减少最大大小 使用 max.poll.records 在 poll() 中返回的批次。 在 org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.sendOffsetCommitRequest(ConsumerCoordinator.java:725) 在 org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.commitOffsetsSync(ConsumerCoordinator.java:604) 在 org.apache.kafka.clients.consumer.KafkaConsumer.commitSync(KafkaConsumer.java:1173) 在 org.apache.kafka.streams.processor.internals.StreamTask.commitOffsets(StreamTask.java:307) 在 org.apache.kafka.streams.processor.internals.StreamTask.access$000(StreamTask.java:49) 在 org.apache.kafka.streams.processor.internals.StreamTask$1.run(StreamTask.java:268) 在 org.apache.kafka.streams.processor.internals.StreamsMetricsImpl.measureLatencyNs(StreamsMetricsImpl.java:187) 在 org.apache.kafka.streams.processor.internals.StreamTask.commitImpl(StreamTask.java:259) 在 org.apache.kafka.streams.processor.internals.StreamTask.suspend(StreamTask.java:362) 在 org.apache.kafka.streams.processor.internals.StreamTask.suspend(StreamTask.java:346) 在 org.apache.kafka.streams.processor.internals.StreamThread$3.apply(StreamThread.java:1118) 在 org.apache.kafka.streams.processor.internals.StreamThread.performOnStreamTasks(StreamThread.java:1448) 在 org.apache.kafka.streams.processor.internals.StreamThread.suspendTasksAndState(StreamThread.java:1110) 在 org.apache.kafka.streams.processor.internals.StreamThread.access 1800 美元(StreamThread.java:73) 在 org.apache.kafka.streams.processor.internals.StreamThread$RebalanceListener.onPartitionsRevoked(StreamThread.java:218) 在 org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.onJoinPrepare(ConsumerCoordinator.java:422) 在 org.apache.kafka.clients.consumer.internals.AbstractCoordinator.joinGroupIfNeeded(AbstractCoordinator.java:353) 在 org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureActiveGroup(AbstractCoordinator.java:310) 在 org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:297) 在 org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1078) 在 org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1043) 在 org.apache.kafka.streams.processor.internals.StreamThread.pollRequests(StreamThread.java:582) 在 org.apache.kafka.streams.processor.internals.StreamThread.runLoop(StreamThread.java:553) 在 org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:527) 2017-08-09 14:50:49 - [错误] [click-live-StreamThread-1] [org.apache.kafka.streams.processor.internals.StreamThread.performOnStreamTasks:1453] :

有人可以帮忙解决可能的原因和解决方案吗?

另外,当我的 1 个 kafka 代理关闭时,我的 kafka 流应用程序没有连接到其他代理? 我已经设置了brokers.list=broker1:9092,broker2:9092,broker3:9092,broker4:9092,broker5:9092

【问题讨论】:

  • 您的max.poll.interval.ms 设置是什么?当max.poll.interval.ms 太短时,我也遇到了类似的问题。 Kafka >0.11 或 MAX_INT
  • 您是否尝试按照消息中的建议进行操作? “您可以通过增加会话超时或通过使用 max.poll.records 减少 poll() 返回的批次的最大大小来解决此问题”

标签: apache-kafka


【解决方案1】:

根据信息,这是最可能的解决途径:

尝试按照消息中的建议进行操作:

“您可以通过增加会话超时时间或通过使用 max.poll.records 减小 poll() 中返回的批处理的最大大小来解决此问题”

【讨论】:

    猜你喜欢
    • 2018-01-15
    • 2018-07-04
    • 2017-02-06
    • 2019-01-08
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    相关资源
    最近更新 更多