我正在运行一个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,通常意味着poll循环 花太多时间留言处理。你也可以解决这个问题 通过增加会话超时或减少最大大小 使用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) at 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) at org.apache.kafka.streams.processor.internals.StreamThread $ RebalanceListener.onPartitionsRevoked(StreamThread.java:218) 在org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.onJoinPrepare(ConsumerCoordinator.java:422) at 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 - [ERROR] [click-live-StreamThread-1] [org.apache.kafka.streams.processor.internals.StreamThread.performOnStreamTasks:1453] :
有人可以帮助解决原因和解决方案吗?
另外,当我的kafka经纪人中有1人失败时,我的kafka流应用程序没有连接到其他经纪人?
我已设置func generate<T: RawRepresentable>(using index: Int) -> T where T.RawValue == Int
{
guard let output = T(rawValue: index) else { preconditionFailure() }
return output
}
答案 0 :(得分:0)
根据信息,这是最有可能的解决途径:
尝试遵循消息中的建议:
“您可以通过增加会话超时时间或使用 max.poll.records 减少 poll() 中返回的批次的最大大小来解决此问题”