kafka 连接异常,复制因子:3 大于可用代理:1

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

卡夫卡连接5.4 只有一个连接器、一名工作人员并使用分布式连接。

以下是错误信息:

[2020-06-22 19:09:58,700] ERROR [Worker clientId=connect-1, groupId=test-cluster] 
Uncaught exception in herder work thread, exiting:  (org.apache.kafka.connect.runtime.distributed.DistributedHerder:290)
org.apache.kafka.connect.errors.ConnectException: Error while attempting to create/find topic(s) 'test-connect-offsets'
    at org.apache.kafka.connect.util.TopicAdmin.createTopics(TopicAdmin.java:262)
    at org.apache.kafka.connect.storage.KafkaOffsetBackingStore$1.run(KafkaOffsetBackingStore.java:99)
    at org.apache.kafka.connect.util.KafkaBasedLog.start(KafkaBasedLog.java:128)
    at org.apache.kafka.connect.storage.KafkaOffsetBackingStore.start(KafkaOffsetBackingStore.java:109)
    at org.apache.kafka.connect.runtime.Worker.start(Worker.java:186)
    at org.apache.kafka.connect.runtime.AbstractHerder.startServices(AbstractHerder.java:121)
    at org.apache.kafka.connect.runtime.distributed.DistributedHerder.run(DistributedHerder.java:277)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 3 larger than available brokers: 1.
    at org.apache.kafka.common.internals.KafkaFutureImpl.wrapAndThrow(KafkaFutureImpl.java:45)
    at org.apache.kafka.common.internals.KafkaFutureImpl.access$000(KafkaFutureImpl.java:32)
    at org.apache.kafka.common.internals.KafkaFutureImpl$SingleWaiter.await(KafkaFutureImpl.java:89)
    at org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:260)
    at org.apache.kafka.connect.util.TopicAdmin.createTopics(TopicAdmin.java:229)
    ... 11 more
Caused by: org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 3 larger than available brokers: 1.
apache-kafka apache-kafka-connect
4个回答
21
投票

为了使 Kafka Connect 以分布式模式运行,它使用存储在 Kafka 集群上的三个主题并保存有关配置等的信息。您需要在 Kafka Connect 工作属性中进行设置:

config.storage.replication.factor=1
offset.storage.replication.factor=1
status.storage.replication.factor=1

如果您使用 Docker 映像,那么您需要设置环境变量来覆盖这些变量,这在 Docker Compose 中如下所示:

CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: "1"
CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: "1"
CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: "1"

参考:配置 Kafka Connect 分布式工作人员


1
投票

除了Robin Moffatt回答的以外,还需要在Docker中进行设置:

CONNECT_CONFLUENT_TOPIC_REPLICATION_FACTOR: 1

您可能还想更改连接器的设置,如下所示:

"topic.creation.default.replication.factor": "1"

(这是Debezium的设定


0
投票

对我来说,使用 Kafka

docker.io/bitnami/kafka:3.5
图像,这两个解决了这个问题:

default.replication.factor=1
offsets.topic.replication.factor=1

实际上我在kafka日志中看到它在创建

__consumer_offset
my.app
主题时遇到问题。第一个用于
my.app
主题,第二个用于偏移主题创建。

当然,就我而言,我只使用一个实例/容器,即 localhost:9092。


-1
投票

将以下内容添加到 config.properties 后即可工作

offsets.topic.replication.factor=1
config.storage.replication.factor=1
offset.storage.replication.factor=1
status.storage.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
© www.soinside.com 2019 - 2024. All rights reserved.