Ricerca nel sito web

Come installare Apache Kafka su Rocky Linux


Su questa pagina

  1. Prerequisiti
  2. Installazione di Java OpenJDK
  3. Download di Apache Kafka
  4. Esecuzione di Kafka come servizio Systemd
  5. Operazioni di base utilizzando Kafka Console Producer e Consumer
  6. Streaming di dati con il plug-in Kafka Connect
  7. Conclusione

Apache Kafka è un archivio dati distribuito per l'elaborazione dei dati in streaming in tempo reale. è sviluppato da Apache Software Foundation e scritto in Java e Scala. Apache Kafka viene utilizzato per creare pipeline di dati in streaming in tempo reale e applicazioni che si adattano al flusso di dati, in particolare per applicazioni di livello aziendale e applicazioni mission-critical. È una delle piattaforme di flusso di dati più popolari utilizzate da migliaia di aziende per pipeline di dati ad alte prestazioni, analisi dei flussi e integrazione dei dati.

Apache Kafka combina messaggistica, archiviazione ed elaborazione dei flussi in un unico posto. Consenti agli utenti di configurare un flusso di dati potente e ad alte prestazioni per la raccolta, l'elaborazione e lo streaming dei dati in tempo reale. Viene utilizzato nelle moderne applicazioni distribuite con la capacità di ridimensionamento per gestire miliardi di eventi in streaming.

In questo tutorial, installeremo Apache Kafka sul server Rocky Linux e impareremo l'utilizzo di base di Kafka come broker di messaggi per lo streaming di dati tramite il plug-in Kafka.

Prerequisiti

Per seguire questo tutorial, avrai bisogno dei seguenti requisiti:

  • Un server Rocky Linux: puoi utilizzare Rocky Linux v8 o v9.
  • Un utente non root con privilegi sudo root.

Installazione di Java OpenJDK

Apache Kafka è un'applicazione basata su Java. Per installare Kafka, devi prima installare Java sul tuo sistema. Al momento della stesura di questo articolo, l'ultima versione di Apache Kafka richiedeva almeno Java OpenJDK v11.

Nella prima fase, installerai Java OpenJDK 11 dal repository ufficiale di Rocky Linux.

Esegui il comando dnf di seguito per installare Java OpenJDK 11 sul tuo sistema Rocky Linux.

sudo dnf install java-11-openjdk

Quando viene richiesto di confermare l'installazione, immettere y e premere INVIO per procedere.

Dopo l'installazione di Java, verificare la versione di Java utilizzando il seguente comando. Vedrai che Java OpenJDK 11 è installato sul tuo sistema Rocky Linux.

java version

Ora che Java è installato, avvierai l'installazione di Apache Kafka.

Scarica Apache Kafka

Apache Kafka fornisce più pacchetti binari per più sistemi operativi, incluso Linux/Unix. In questo passaggio, creerai un nuovo utente di sistema dedicato per Kafka, scaricherai il pacchetto binario di Kafka e configurerai l'installazione di Apache Kafka.

Esegui il seguente comando per creare un nuovo utente di sistema denominato kafka. Questo creerà un nuovo utente di sistema per Kafka con la home directory predefinita /opt/kafka, che verrà utilizzata come directory di installazione di Kafka.

sudo useradd -r -d /opt/kafka -s /usr/sbin/nologin kafka

Ora sposta la tua directory di lavoro in /opt. Quindi, scarica il pacchetto binario di Apache Kafka tramite il comando curl di seguito. Ora vedrai il file kafka.tar.gz.

cd /opt
sudo curl -fsSLo kafka.tgz https://downloads.apache.org/kafka/3.3.1/kafka_2.12-3.3.1.tgz

Estrai il file kafka.tar.gz tramite il comando tar e rinomina la directory estratta /opt/kafka.

tar -xzf kafka.tgz
sudo mv kafka_2.12-3.3.1 /opt/kafka

Quindi, cambia la proprietà della directory /opt/kafka all'utente kafka tramite il comando chmod di seguito.

sudo chown -R kafka:kafka /opt/kafka

Successivamente, crea una nuova directory dei log per Apache Kafka. Quindi, modifica la configurazione predefinita server.properties tramite l'editor nano.

sudo -u kafka mkdir -p /opt/kafka/logs
sudo -u kafka nano /opt/kafka/config/server.properties

La directory dei log di Kafka verrà utilizzata per archiviare i log di Apache Kafka ed è necessario definire la directory dei log nella configurazione di Kakfka sertver.properties.

Rimuovere il commento dall'opzione log.dirs e modificare il valore in /opt/kafka/logs.

# logs configuration for Apache Kafka
log.dirs=/opt/kafka/logs

Salva il file ed esci dall'editor quando hai finito.

Ora hai completato l'installazione e la configurazione di base di Apache Kafka. Successivamente, configurerai ed eseguirai Apache Kafka come servizio systemd.

Esecuzione di Kafka come servizio Systemd

Il pacchetto Apache Kafka include un'altra applicazione Zookeeper che viene utilizzata per centralizzare i servizi e mantenere l'elezione del controller Kafka, le configurazioni degli argomenti e gli ACL (elenchi di controllo degli accessi) per il cluster Apache Kafka.

Per eseguire Apache Kafka, devi prima eseguire Zookeeper sul tuo sistema. E in questo passaggio, creerai un nuovo file di servizio systemd sia per Zookeeper che per Apache Kafka. Entrambi i servizi funzioneranno anche con lo stesso utente kafka.

Crea un nuovo file di servizio per Zookeeper /etc/systemd/system/zookeeper.service utilizzando il seguente comando.

sudo nano /etc/systemd/system/zookeeper.service

Aggiungi la configurazione al file.

[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
User=kafka
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Salva il file ed esci dall'editor quando hai finito.

Successivamente, crea un nuovo file di servizio per Apache Kafka /etc/systemd/system/kafka.service utilizzando il comando seguente.

sudo nano /etc/systemd/system/kafka.service

Aggiungere la seguente configurazione al file. Puoi vedere nella sezione [Unit] che il servizio Kafka richiede che zookeeper.service sia in esecuzione per primo e che sia sempre in esecuzione dopo zookeeper.service.

[Unit]
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties > /opt/kafka/logs/start-kafka.log 2>&1'
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Salva il file ed esci dall'editor quando hai finito.

Successivamente, esegui il seguente comando systemctl per ricaricare il gestore systemd e applicare nuovi servizi.

sudo systemctl daemon-reload

Ora avvia i servizi Zookeeper e Kafka usando il seguente comando.

sudo systemctl start zookeeper
sudo systemctl start kafka

Abilita l'esecuzione automatica dei servizi kafka e zookeeper all'avvio del sistema tramite il comando systemctl di seguito.

sudo systemctl enable zookeeper
sudo systemctl enable kafka

Infine, verifica sia il servizio Zookeeper che Kafka utilizzando il comando seguente.

sudo systemctl status zookeeper
sudo systemctl status kafka

Nell'output seguente, puoi vedere che lo stato corrente del servizio Zookeeper è in esecuzione ed è anche abilitato.

E sotto per lo stato del servizio kafka, che è in esecuzione e anche il servizio è abilitato.

Ora che hai terminato l'installazione di Apache Kafka ed è ora attivo e funzionante. successivamente, imparerai l'utilizzo di base di Apache Kafka come broker di messaggi per la produzione di messaggi e imparerai anche come utilizzare il plug-in Kafka per lo streaming di dati in tempo reale.

Operazioni di base utilizzando Kafka Console Producer e Consumer

Prima di iniziare, tutti i comandi che verranno utilizzati per questo esempio sono forniti dal pacchetto Kafka disponibile nella directory /opt/kafka/bin.

In questo passaggio, imparerai come creare ed elencare gli argomenti Kafka, avviare il produttore e inserire i dati, trasmettere i dati tramite lo script del consumatore e, infine, ripulire il tuo ambiente eliminando l'argomento Kafka.

Eseguire il seguente comando per creare un nuovo argomento Kafka. Utilizzerai lo script kafka-topics.sh per creare un nuovo argomento con il nome TestTopic con una replica e una partizione.

sudo -u kafka /opt/kafka/bin/kafka-topics.sh \
--create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic TestTopic

Ora esegui il seguente comando per verificare l'elenco degli argomenti sul tuo Kafka. Dovresti vedere che TestTopic è stato creato sul tuo server Kafka.

sudo -u kafka /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092

Successivamente, per produrre messaggi è possibile utilizzare lo script kafka-console-producser.sh e quindi inserire i dati che verranno elaborati.

Eseguire il comando seguente per avviare Kafka Console Producer e specificare l'argomento in TestTopic.

sudo -u kafka /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TestTopic

Dopo aver ottenuto il Kafka Console Producer, inserisci qualsiasi messaggio che verrà elaborato.

Successivamente, apri una nuova sessione terminale e accedi al server. Quindi apri Kafka Console Consumer tramite lo script kafka-conosle-consumer.sh.

Eseguire il comando seguente per avviare kafka Console Consumer e specificare l'argomento in TestTopic.

sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TestTopic --from-beginning

Nello screenshot qui sotto, puoi vedere tutti i messaggi dal produttore della console Kafka che vengono elaborati nella console del consumatore. È inoltre possibile digitare altri messaggi nel produttore della console e il messaggio verrà automaticamente proseguito e visualizzato nella schermata del consumatore della console.

Ora premi Ctrl+c per uscire sia da Kafka Console Producer che da Kafka Console Consumer.

Per ripulire il tuo ambiente Kafka, puoi eliminare e rimuovere TestTopic tramite il seguente comando.

sudo -u kafka /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic TestTopic

Streaming di dati con il plug-in Kafka Connect

Apache Kafka fornisce più plug-in che possono essere utilizzati per lo streaming di dati da più fonti. Ulteriori plug-in della libreria Kafka sono disponibili per impostazione predefinita nella directory /opt/kafka/libs, è necessario abilitare i plug-in Kafka tramite il file di configurazione /opt/kafka/config/connect-standalone.properties. In questo caso, per la modalità standalone di Kafka.

Esegui il seguente comando per modificare il file di configurazione di Kafka /opt/kafka/config/connect-standalone.properties.

sudo -u kafka nano /opt/kafka/config/connect-standalone.properties

Rimuovere il commento dalla riga plugin.path e modificare il valore nella directory della libreria dei plugin /opt/kakfa/libs.

plugin.path=/opt/kafka/libs

Salva il file ed esci dall'editor quando hai finito.

Successivamente, esegui il seguente comando per creare un nuovo file /opt/kafka/test.txt che verrà utilizzato come origine dati per il flusso Kafka.

sudo -u kafka echo -e "Test message from file\nTest using Kafka connect from file" > /opt/kafka/test.txt

Ora esegui il seguente comando per avviare Kafka Consumer in modalità autonoma con i file di configurazione connect-file-source.properties e connect-file-sink.properties.

Questo comando e configurazione è un esempio predefinito del flusso di dati Kafka con il file di origine test.txt che hai appena creato. Questo esempio creerà automaticamente anche un nuovo argomento connect-test a cui puoi accedere tramite Kafka Console Consumer.

cd /opt/kafka
sudo -u kafka /opt/kafka/bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties config/connect-file-sink.properties

Ora, apri un'altra sessione di terminale ed esegui il seguente comando per avviare Kafka Console Consumer. Inoltre, specificare l'argomento da connettere-test. Vedrai il messaggio dal file test.txt.

sudo -u kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic connect-test --from-beginning

Ora puoi aggiornare il file test.txt e i nuovi messaggi verranno automaticamente elaborati e trasmessi in streaming su Kafka Console Consumer.

Esegui il seguente comando per aggiornare il file test.txt con i nuovi messaggi.

sudo -u kafka echo "Another test message from file test.txt" >> test.txt

Nell'output seguente, puoi vedere che i nuovi messaggi vengono elaborati automaticamente da Kafka quando vengono apportate modifiche al file test.txt. Ora hai completato l'utilizzo di base del plug-in Kafka connect per lo streaming di messaggi tramite file.

Conclusione

In questa guida, hai imparato come installare Apache Kafka sul sistema Rocky Linux. Hai anche appreso l'utilizzo di base della Kafka Producer Console per la produzione e l'elaborazione dei messaggi e del Kafka Consumer per la ricezione dei messaggi. Alla fine, hai anche imparato come abilitare i plug-in Kafka e utilizzare il plug-in Kafka Connect per lo streaming di messaggi in tempo reale da un file.