web-dev-qa-db-ja.com

Kafkaトピックの作成中にエラーが発生しました:-利用可能なブローカーよりも大きいレプリケーション係数

kafka以下のコードを使用してAdminCommand経由でトピックを作成しようとしています Source

 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)

ただし、シェルコマンドを使用してトピックを作成できます。

10
Count

あなたのコードでは、

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

4番目の引数は複製係数です。したがって、パーティションpa_reliancepoc_telecom_usageeventおよびcount of 10を使用して、replication of 2という名前のトピックを作成しようとしています。したがって、トピックの作成中はtwo kafka brokersを使用できる必要があります。 2つ未満の場合は、次の例外が発生します。

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と2つのノードshould be alive while creating the topic.を実行していることを確認してください

クラスターでkafka=を実行するには、 このリンク のステップ6を参照してください

13
Jaya Ananthram

replication_factor > 1を維持する場合に備えて、複数のブローカーが稼働するようにローカルマシンを構成します。

これは、server.propertiesファイルの複数のコピーを作成するだけで実行できます。例えば
server-1.propertiesserver-2.properties

次に、それらのファイルのそれぞれに異なるbroker.idportを指定して、それらを一意にする必要があります。

   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:マルチブローカークラスターのセットアップ

5
user2720864

複数のブローカーを設定しているときに、同じ問題に直面しました。

私が欠けていたステップは:

構成ファイルの編集中:config/server-1.properties:broker.id = 1 listeners = PLAINTEXT://:9093 log.dir =/tmp/kafka-logs-1

lOG BASICSセクションも更新する必要があります(以下を参照):

ログファイルを格納するディレクトリのコンマ区切りリスト

log.dirs=/tmp/kafka-logs-1
0
Ananth Joshi