apache-kafka Tutorial
Iniziare con apache-kafka
Ricerca…
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 inbin\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.propertiese impostadelete.topic.enablesu 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