apache-kafkaIniziare con apache-kafka


Osservazioni

Kafka è un sistema di messaggistica di pubblicazione-sottoscrizione high throughput implementato come servizio di registro di commit distribuito, partizionato e replicato.

Tratto dal sito ufficiale di Kafka

Veloce

Un singolo broker Kafka può gestire centinaia di megabyte di letture e scritture al secondo da migliaia di client.

Scalabile

Kafka è progettato per consentire a un singolo cluster di fungere da backbone centrale dei dati per una grande organizzazione. Può essere espanso elasticamente e in modo trasparente senza tempi di fermo. I flussi di dati sono partizionati e distribuiti su un cluster di macchine per consentire flussi di dati più grandi delle capacità di una singola macchina e per consentire cluster di consumatori coordinati

Durevole

I messaggi sono persistenti su disco e replicati all'interno del cluster per prevenire la perdita di dati. Ogni broker può gestire terabyte di messaggi senza impatto sulle prestazioni.

Distribuito da Design

Kafka ha un design moderno incentrato sul cluster che offre una lunga durata e garanzie di tolleranza agli errori.

Installazione o configurazione

Passaggio 1 . Installa Java 7 o 8

Passaggio 2 . Scarica Apache Kafka all'indirizzo: http://kafka.apache.org/downloads.html

Ad esempio, proveremo a scaricare Apache Kafka 0.10.0.0

Passaggio 3 . Estrai il file compresso.

Su Linux:

tar -xzf kafka_2.11-0.10.0.0.tgz
 

Sulla finestra: clic destro -> Estrai qui

Passaggio 4 . Avvia Zookeeper

cd kafka_2.11-0.10.0.0
 

Linux:

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

Finestre:

bin/windows/zookeeper-server-start.bat config/zookeeper.properties
 

Passaggio 5 . Avvia il server Kafka

Linux:

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

Finestre:

bin/windows/kafka-server-start.bat config/server.properties
 

introduzione

Apache Kafka ™ è una piattaforma di streaming distribuita.

Che significa

1-Ti consente di pubblicare e iscriverti a stream di record. Sotto questo aspetto è simile a una coda di messaggi o sistema di messaggistica aziendale.

2-Consente di archiviare flussi di record in modalità fault-tolerant.

3-Consente di elaborare flussi di record nel momento in cui si verificano.

Viene utilizzato per due ampie classi di applicazioni:

1-Costruire pipeline di dati di streaming in tempo reale che ottengono dati in modo affidabile tra sistemi o applicazioni

2-Creazione di applicazioni di streaming in tempo reale che trasformano o reagiscono ai flussi di dati

Gli script di console di Kafka sono diversi per piattaforme basate su Unix e Windows. Negli esempi, potrebbe essere necessario aggiungere l'estensione in base alla piattaforma. Linux: script situati in bin/ con estensione .sh . Windows: script situati in bin\windows\ e con estensione .bat .

Installazione

Passaggio 1: scaricare il codice e decomprimerlo:

tar -xzf kafka_2.11-0.10.1.0.tgz
cd kafka_2.11-0.10.1.0
 

Passaggio 2: avviare il server.

per poter eliminare gli argomenti in un secondo momento, apri server.properties e imposta delete.topic.enable su true.

Kafka fa molto affidamento su Zookeeper, quindi è necessario avviarlo prima. Se non lo si è installato, è possibile utilizzare lo script di convenienza fornito con kafka per ottenere un'istanza ZooKeeper a nodo singolo rapida e sporca.

zookeeper-server-start config/zookeeper.properties
kafka-server-start config/server.properties
 

Passaggio 3: assicurarsi che tutto sia in esecuzione

Ora dovresti avere zookeeper che ascolta localhost:2181 e un singolo broker kafka su localhost:6667 .

Crea un argomento

Abbiamo solo un broker, quindi creiamo un argomento senza fattore di replica e solo una partizione:

kafka-topics --zookeeper localhost:2181 \
    --create \
    --replication-factor 1 \
    --partitions 1 \
    --topic test-topic
 

Controlla il tuo argomento:

kafka-topics --zookeeper localhost:2181 --list
test-topic

kafka-topics --zookeeper localhost:2181 --describe --topic test-topic
Topic:test-topic    PartitionCount:1    ReplicationFactor:1 Configs:
Topic: test-topic   Partition: 0    Leader: 0   Replicas: 0 Isr: 0
 

inviare e ricevere messaggi

Lancia un consumatore:

kafka-console-consumer --bootstrap-server localhost:9092 --topic test-topic
 

Su un altro terminale, avviare un produttore e inviare alcuni messaggi. Per impostazione predefinita, lo strumento invia ogni riga come un messaggio separato al broker, senza codifica speciale. Scrivi alcune linee ed esci con CTRL + D o CTRL + C:

kafka-console-producer --broker-list localhost:9092 --topic test-topic   
a message
another message
^D
 

I messaggi dovrebbero apparire nel terminale del consumatore.

Smetti di kafka

kafka-server-stop 
 

avviare un cluster multi-broker

Gli esempi precedenti utilizzano solo un broker. Per configurare un cluster reale, abbiamo solo bisogno di avviare più di un server kafka. Si coordineranno automaticamente da soli.

Passo 1: per evitare collisioni, creiamo un file server.properties per ogni broker e modifichiamo le proprietà di configurazione id , port e logfile .

Copia:

cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties
 

Modifica le proprietà per ogni file, ad esempio:

vim config/server-1.properties
broker.id=1
listeners=PLAINTEXT://:9093
log.dirs=/usr/local/var/lib/kafka-logs-1

vim config/server-2.properties
broker.id=2
listeners=PLAINTEXT://:9094
log.dirs=/usr/local/var/lib/kafka-logs-2
 

Step 2: avvia i tre broker:

    kafka-server-start config/server.properties &
    kafka-server-start config/server-1.properties &
    kafka-server-start config/server-2.properties &
 

Creare un argomento replicato

kafka-topics --zookeeper localhost:2181 --create --replication-factor 3 --partitions 1 --topic replicated-topic

kafka-topics --zookeeper localhost:2181 --describe --topic replicated-topic
Topic:replicated-topic  PartitionCount:1    ReplicationFactor:3 Configs:
Topic: replicated-topic Partition: 0    Leader: 1   Replicas: 1,2,0 Isr: 1,2,0
 

Questa volta, ci sono più informazioni:

  • "leader" è il nodo responsabile di tutte le letture e scritture per la partizione specificata. Ogni nodo sarà il leader per una porzione selezionata a caso delle partizioni.
  • "repliche" è l'elenco di nodi che replicano il log per questa partizione indipendentemente dal fatto che siano il leader o anche se siano attualmente vivi.
  • "isr" è l'insieme delle repliche "in-sync". Questo è il sottoinsieme dell'elenco delle repliche che è attualmente vivo e catturato dal leader.

Si noti che l'argomento creato in precedenza è rimasto invariato.

test di tolleranza d'errore

Pubblica un messaggio sul nuovo argomento:

kafka-console-producer --broker-list localhost:9092 --topic replicated-topic
hello 1
hello 2
^C
 

Uccidi il leader (1 nel nostro esempio). Su Linux:

ps aux | grep server-1.properties
kill -9 <PID>
 

Su Windows:

wmic process get processid,caption,commandline | find "java.exe" | find "server-1.properties" 
taskkill /pid <PID> /f
 

Guarda cosa è successo:

kafka-topics --zookeeper localhost:2181  --describe --topic replicated-topic
Topic:replicated-topic  PartitionCount:1    ReplicationFactor:3 Configs:
Topic: replicated-topic Partition: 0    Leader: 2   Replicas: 1,2,0 Isr: 2,0
 

La leadership è passata al broker 2 e "1" non più in-sync. Ma i messaggi sono ancora lì (usa il consumatore per controllare da solo).

Pulire

Elimina i due argomenti usando:

kafka-topics --zookeeper localhost:2181 --delete --topic test-topic
kafka-topics --zookeeper localhost:2181 --delete --topic replicated-topic