2015-01-23 19 views
10

Sto cercando di creare un argomento Kafka tramite AdminCommand utilizzando sottostante Codice SourceErrore nella creazione argomento Kafka: - fattore di replica più grande di broker disponibili

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

Ma ottenere l'eccezione di seguito

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) 

Tuttavia, Sono in grado di creare l'argomento utilizzando il comando shell.

risposta

13

Nel codice,

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

Il quarto argomento è il fattore di replica. Quindi stai cercando di creare un argomento con il nome pa_reliancepoc_telecom_usageevent con la partizione count of 10 e replication of 2. Quindi two kafka brokers dovrebbe essere disponibile durante la creazione dell'argomento. Se sono disponibili meno di due, si otterrà la seguente eccezione.

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) 

Assicurarsi che si esegue kafka cluster with two broker nodes e i due nodi should be alive while creating the topic.

Per eseguire Kafka a grappolo riferimento Passo 6 in this link

+0

In ogni caso, l'eccezione è grossolanamente fuorviante e probabilmente dovrebbe leggere: "[...] Fattore replica: 2 più grandi di broker disponibili: 1" – sandris

4

configurare la macchina locale per avere più broker attivo e funzionante in caso decidi di mantenere il tuo replication_factor > 1.

È possibile farlo semplicemente avendo più copie del file server.properties . ad esempio
server-1.properties & server-2.properties

È necessario quindi specificare diversi broker.id & port in ognuno di quei file per renderli unici ..

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 

e quindi avviare più istanze con i seguenti comandi

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

Per ulteriori dettagli, verificare Step 6: Setting up a multi-broker cluster

0

Ho affrontato lo stesso problema durante l'impostazione di più broker.

Il passo che mi mancava era:

Durante la modifica del file di configurazione: config/server-1.properties: broker.id = 1 ascoltatori = PLAINTEXT: //: 9093 log.dir =/tmp/kafka-tronchi-1

necessità di aggiornare la sezione FONDAMENTI LOG così (vedi sotto):

##################### ## Log Noics

Un elenco separato da virgole di directory in cui archiviare il registro les

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