Apache Kafka - Operazioni di base

Per prima cosa iniziamo a implementare la configurazione a singolo nodo- broker singolo e quindi migreremo la nostra configurazione alla configurazione a singolo nodo-broker multipli.

Si spera che tu abbia già installato Java, ZooKeeper e Kafka sulla tua macchina. Prima di passare all'installazione di Kafka Cluster, devi prima avviare ZooKeeper perché Kafka Cluster usa ZooKeeper.

Avvia ZooKeeper

Apri un nuovo terminale e digita il seguente comando:

bin/zookeeper-server-start.sh config/zookeeper.properties

Per avviare Kafka Broker, digita il seguente comando:

bin/kafka-server-start.sh config/server.properties

Dopo aver avviato Kafka Broker, digita il comando jps sul terminale ZooKeeper e vedrai la seguente risposta:

821 QuorumPeerMain
928 Kafka
931 Jps

Ora puoi vedere due daemon in esecuzione sul terminale in cui QuorumPeerMain è il daemon di ZooKeeper e un altro è il daemon di Kafka.

Configurazione Single Node-Single Broker

In questa configurazione hai una singola istanza di ZooKeeper e ID broker. Di seguito sono riportati i passaggi per configurarlo:

Creating a Kafka Topic- Kafka fornisce un'utilità della riga di comando denominata kafka-topics.sh per creare argomenti sul server. Apri un nuovo terminale e digita l'esempio seguente.

Syntax

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 
--partitions 1 --topic topic-name

Example

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1   
--partitions 1 --topic Hello-Kafka

Abbiamo appena creato un argomento denominato Hello-Kafka con una singola partizione e un fattore di replica. L'output creato sopra sarà simile al seguente output:

Output- Argomento creato Hello-Kafka

Una volta creato l'argomento, è possibile ottenere la notifica nella finestra del terminale del broker Kafka e il registro per l'argomento creato specificato in "/ tmp / kafka-logs /" nel file config / server.properties.

Elenco degli argomenti

Per ottenere un elenco di argomenti nel server Kafka, puoi utilizzare il seguente comando:

Syntax

bin/kafka-topics.sh --list --zookeeper localhost:2181

Output

Hello-Kafka

Poiché abbiamo creato un argomento, elencherà solo Hello-Kafka . Supponiamo che, se crei più di un argomento, otterrai i nomi degli argomenti nell'output.

Avvia Producer per inviare messaggi

Syntax

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic-name

Dalla sintassi sopra, sono richiesti due parametri principali per il client della riga di comando del produttore:

Broker-list- L'elenco dei broker a cui vogliamo inviare i messaggi. In questo caso abbiamo un solo broker. Il file Config / server.properties contiene l'ID della porta del broker, poiché sappiamo che il nostro broker è in ascolto sulla porta 9092, quindi puoi specificarlo direttamente.

Nome dell'argomento: ecco un esempio per il nome dell'argomento.

Example

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Hello-Kafka

Il produttore attenderà l'input da stdin e pubblicherà nel cluster Kafka. Per impostazione predefinita, ogni nuova riga viene pubblicata come un nuovo messaggio, quindi le proprietà del produttore predefinito vengono specificate nel file config / producer.properties . Ora puoi digitare alcune righe di messaggi nel terminale come mostrato di seguito.

Output

$ bin/kafka-console-producer.sh --broker-list localhost:9092 
--topic Hello-Kafka[2016-01-16 13:50:45,931] 
WARN property topic is not valid (kafka.utils.Verifia-bleProperties)
Hello
My first message
My second message

Avvia consumer per ricevere messaggi

Analogamente a producer, le proprietà consumer predefinite sono specificate nel file config / consumer.proper-ties . Apri un nuovo terminale e digita la sintassi seguente per consumare i messaggi.

Syntax

bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic topic-name 
--from-beginning

Example

bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic Hello-Kafka 
--from-beginning

Output

Hello
My first message
My second message

Infine, puoi inserire messaggi dal terminale del produttore e vederli apparire nel terminale del consumatore. A partire da ora, hai un'ottima conoscenza del cluster a nodo singolo con un singolo broker. Passiamo ora alla configurazione di più broker.

Configurazione a nodo singolo-broker multipli

Prima di passare alla configurazione del cluster di più broker, avvia il tuo server ZooKeeper.

Create Multiple Kafka Brokers- Abbiamo già un'istanza del broker Kafka in con-fig / server.properties. Ora abbiamo bisogno di più istanze di broker, quindi copia il file server.prop-erties esistente in due nuovi file di configurazione e rinominalo come server-one.properties e server-two.prop-erties. Quindi modifica entrambi i nuovi file e assegna le seguenti modifiche:

config / server-one.properties

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1
# The port the socket server listens on
port=9093
# A comma seperated list of directories under which to store log files
log.dirs=/tmp/kafka-logs-1

config / server-two.properties

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=2
# The port the socket server listens on
port=9094
# A comma seperated list of directories under which to store log files
log.dirs=/tmp/kafka-logs-2

Start Multiple Brokers- Dopo che tutte le modifiche sono state apportate su tre server, apri tre nuovi terminali per avviare ogni broker uno per uno.

Broker1
bin/kafka-server-start.sh config/server.properties
Broker2
bin/kafka-server-start.sh config/server-one.properties
Broker3
bin/kafka-server-start.sh config/server-two.properties

Ora abbiamo tre diversi broker in esecuzione sulla macchina. Provalo da solo per controllare tutti i daemon digitandojps sul terminale ZooKeeper, vedrai la risposta.

Creazione di un argomento

Assegniamo il valore del fattore di replica come tre per questo argomento perché abbiamo tre diversi broker in esecuzione. Se hai due broker, il valore della replica assegnato sarà due.

Syntax

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 
-partitions 1 --topic topic-name

Example

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 
-partitions 1 --topic Multibrokerapplication

Output

created topic “Multibrokerapplication”

Il comando Descrivi viene utilizzato per verificare quale broker è in ascolto sull'argomento attualmente creato come mostrato di seguito -

bin/kafka-topics.sh --describe --zookeeper localhost:2181 
--topic Multibrokerappli-cation

Output

bin/kafka-topics.sh --describe --zookeeper localhost:2181 
--topic Multibrokerappli-cation

Topic:Multibrokerapplication    PartitionCount:1 
ReplicationFactor:3 Configs:
   
Topic:Multibrokerapplication Partition:0 Leader:0 
Replicas:0,2,1 Isr:0,2,1

Dall'output di cui sopra, possiamo concludere che la prima riga fornisce un riepilogo di tutte le partizioni, mostrando il nome dell'argomento, il conteggio delle partizioni e il fattore di replica che abbiamo già scelto. Nella seconda riga, ogni nodo sarà il leader per una parte selezionata casualmente delle partizioni.

Nel nostro caso, vediamo che il nostro primo broker (con broker.id 0) è il leader. Quindi Repliche: 0,2,1 significa che tutti i broker replicano l'argomento, infine Isr è l'insieme delle repliche sincronizzate . Ebbene, questo è il sottoinsieme delle repliche attualmente in vita e raggiunte dal leader.

Avvia Producer per inviare messaggi

Questa procedura rimane la stessa della configurazione del broker singolo.

Example

bin/kafka-console-producer.sh --broker-list localhost:9092 
--topic Multibrokerapplication

Output

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Multibrokerapplication
[2016-01-20 19:27:21,045] WARN Property topic is not valid (kafka.utils.Verifia-bleProperties)
This is single node-multi broker demo
This is the second message

Avvia consumer per ricevere messaggi

Questa procedura rimane la stessa mostrata nella configurazione del broker singolo.

Example

bin/kafka-console-consumer.sh --zookeeper localhost:2181 
—topic Multibrokerapplica-tion --from-beginning

Output

bin/kafka-console-consumer.sh --zookeeper localhost:2181 
—topic Multibrokerapplica-tion —from-beginning
This is single node-multi broker demo
This is the second message

Operazioni sugli argomenti di base

In questo capitolo discuteremo le varie operazioni di base sugli argomenti.

Modifica di un argomento

Come hai già capito come creare un argomento in Kafka Cluster. Ora modifichiamo un argomento creato utilizzando il seguente comando

Syntax

bin/kafka-topics.sh —zookeeper localhost:2181 --alter --topic topic_name 
--parti-tions count

Example

We have already created a topic “Hello-Kafka” with single partition count and one replica factor. 
Now using “alter” command we have changed the partition count.
bin/kafka-topics.sh --zookeeper localhost:2181 
--alter --topic Hello-kafka --parti-tions 2

Output

WARNING: If partitions are increased for a topic that has a key, 
the partition logic or ordering of the messages will be affected
Adding partitions succeeded!

Eliminazione di un argomento

Per eliminare un argomento, puoi utilizzare la seguente sintassi.

Syntax

bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic topic_name

Example

bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic Hello-kafka

Output

> Topic Hello-kafka marked for deletion

Note −Questo non avrà alcun impatto se delete.topic.enable non è impostato su true