创建kafka主题时出错:-复制因子大于可用代理

hsvhsicv  于 2021-06-08  发布在  Kafka
关注(0)|答案(3)|浏览(346)

我试图创建一个Kafka主题通过admincommand使用下面的源代码

ZkClient zkClient = new ZkClient(kafkaHost, 10000, 10000, ZKStringSerializer$.MODULE$);
    AdminUtils.createTopic(zkClient, "pa_reliancepoc_telecom_usageevent", 10, 2, new Properties());

但得到以下例外

Exception in thread "main" kafka.admin.AdminOperationException: replication factor: 1 larger than available brokers: 0
at kafka.admin.AdminUtils$.assignReplicasToBrokers(AdminUtils.scala:70)
at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:155)

但是,我可以使用shell命令创建主题。

xxls0lw8

xxls0lw81#

在你的代码里,

AdminUtils.createTopic(zkClient, "pa_reliancepoc_telecom_usageevent", 10, 2, new Properties());

第四个参数是复制因子。所以您正在尝试创建一个名为的主题 pa_reliancepoc_telecom_usageevent 带隔板 count of 10 以及 replication of 2 . 所以呢 two kafka brokers 应在创建主题时可用。如果少于两个可用,那么您将得到以下异常。

Exception in thread "main" kafka.admin.AdminOperationException: replication factor: 1 larger than available brokers: 0
at kafka.admin.AdminUtils$.assignReplicasToBrokers(AdminUtils.scala:70)
at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:155)

确保你正在跑步 kafka cluster with two broker nodes 两个节点 should be alive while creating the topic. 要在集群中运行kafka,请参阅此链接中的步骤6

nbnkbykc

nbnkbykc2#

配置您的本地计算机,使多个代理可以启动并运行,以防您决定保留您的代理 replication_factor > 1 .
您只需拥有多个 server.properties 文件。例如 server-1.properties & server-2.properties 然后需要指定不同的 broker.id & port 在每一个文件中使它们独一无二。。

config/server-1.properties:
     broker.id=1
     port=9093
     log.dir=/tmp/kafka-logs-1

   config/server-2.properties:
     broker.id=2
     port=9094
     log.dir=/tmp/kafka-logs-2

然后使用以下命令启动多个示例

> bin/kafka-server-start.sh config/server-1.properties &
> bin/kafka-server-start.sh config/server-2.properties &

有关更多详细信息,请查看步骤6:设置多代理群集

brqmpdu1

brqmpdu13#

我在建立多个经纪人时也面临同样的问题。
我缺少的步骤是:
编辑配置文件时:config/server-1.properties:broker.id=1 listeners=plaintext://:9093 log.dir=/tmp/kafka-logs-1
还需要更新“日志基础知识”部分(请参见下文):

####################### 日志基础知识

以逗号分隔的目录列表,用于存储日志文件

log.dirs=/tmp/kafka-logs-1

相关问题