Jak nainstalovat Apache Kafka v Ubuntu 20.04

Úvod do problematiky

Apache Kafka představuje distribuovanou platformu pro zpracování událostí, která je navržena tak, aby efektivně manipulovala s rozsáhlými objemy dat v reálném čase. Díky své schopnosti škálování, spolehlivosti a minimální odezvě se Kafka stala preferovanou volbou pro manipulaci s datovými toky, analýzu v reálném čase a vytváření aplikací založených na událostech.

V tomto průvodci vás krok za krokem provedeme procesem instalace a konfigurace Apache Kafka na operačním systému Ubuntu 20.04. Zaměříme se na instalaci nejnovější verze Kafka a ukážeme si, jak efektivně vytvářet a spravovat témata a procesy odesílání a přijímání dat (producenti/spotřebitelé).

Krok 1: Instalace Java Runtime Environment

Pro bezproblémový chod Apache Kafka je nezbytná Java. Nejprve nainstalujte JRE (Java Runtime Environment) s využitím následujících příkazů:


sudo apt update
sudo apt install openjdk-11-jre

Po instalaci ověřte správnou funkčnost Javy příkazem:


java -version

Krok 2: Získání a instalace Apache Kafka

Stáhněte si nejnovější verzi Apache Kafka z oficiálních stránek projektu:


wget https://dlcdn.apache.org/kafka/3.3.0/kafka_2.13-3.3.0.tgz

Po stažení rozbalte archiv:


tar -xzvf kafka_2.13-3.3.0.tgz

Rozbalenou složku přesuňte do adresáře /opt:


sudo mv kafka_2.13-3.3.0 /opt/kafka

Krok 3: Nastavení konfigurace Apache Kafka

Otevřete konfigurační soubor Kafka server.properties, který naleznete v /opt/kafka/config pro úpravu:


sudo nano /opt/kafka/config/server.properties

V souboru nastavte následující parametry:


broker.id=0
listeners=PLAINTEXT://:9092
log.dirs=/tmp/kafka-logs

Parametr broker.id definuje identifikační číslo Kafka brokera (v tomto případě 0). listeners nastavuje port (9092), na kterém budou klienti Kafka komunikovat s brokerem. log.dirs určuje složku /tmp/kafka-logs, kam se budou ukládat logy.

Krok 4: Spuštění Apache Kafka

Pro spuštění Apache Kafka využijte následující příkaz:


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

Ověřte úspěšné spuštění Kafky příkazem:


jps

Měli byste vidět běžící proces s názvem Kafka.

Krok 5: Vytvoření Kafka tématu

Pro vytvoření nového tématu Kafka s názvem test-topic s jedním oddílem (partition) a jednou replikou použijte příkaz kafka-topics:


/opt/kafka/bin/kafka-topics.sh --create --topic test-topic --partitions 1 --replication-factor 1

Krok 6: Vytvoření producenta Kafka

Pro odesílání dat do Kafka tématu vytvoříme producenta s pomocí následujícího Java kódu:


import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;

import java.util.Properties;

public class SimpleProducer {

    public static void main(String[] args) {
        // Konfigurace producenta
        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        KafkaProducer<String, String> producer = new KafkaProducer<>(props);

        // Odeslání zprávy do tématu
        ProducerRecord<String, String> record = new ProducerRecord<>("test-topic", "Hello, Kafka!");
        producer.send(record);

        // Uzavření producenta
        producer.close();
    }
}

Uložte tento kód jako SimpleProducer.java a zkompilujte jej:


javac SimpleProducer.java

Spusťte producenta:


java SimpleProducer

Krok 7: Vytvoření spotřebitele Kafka

Nyní si vytvoříme spotřebitele, který bude přijímat zprávy z tématu Kafka, pomocí následujícího Java kódu:


import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.common.serialization.StringDeserializer;

import java.time.Duration;
import java.util.Collections;
import java.util.Properties;

public class SimpleConsumer {

    public static void main(String[] args) {
        // Konfigurace spotřebitele
        Properties props = new Properties();
        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
        props.put(ConsumerConfig.GROUP_ID_CONFIG, "my-group");
        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
        KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);

        // Přihlášení k odběru tématu
        consumer.subscribe(Collections.singletonList("test-topic"));

        // Zpracování přijatých zpráv
        while (true) {
            ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
            for (ConsumerRecord<String, String> record : records) {
                System.out.println(record.value());
            }
        }
        // Uzavření spotřebitele
         consumer.close();
    }
}

Uložte tento kód jako SimpleConsumer.java a zkompilujte jej:


javac SimpleConsumer.java

Spusťte spotřebitele:


java SimpleConsumer

Závěrem

Úspěšně jsme nainstalovali Apache Kafka na Ubuntu 20.04. Prošli jsme procesem instalace Javy, stažení a instalace Kafka, konfigurace serveru, spuštění a testování s producentem a spotřebitelem. Nyní máte funkční platformu pro zpracování datových toků a vytváření aplikací v reálném čase.

Rozšířené tipy:

  • Zvažte nasazení více brokerů pro zvýšení odolnosti.
  • Pro vyšší výkon aktivujte kompresi zpráv.
  • Použijte Kafka Connect pro integraci s dalšími systémy.
  • Pro sledování a správu použijte nástroj Kafka Manager.

Často kladené otázky (FAQ)

1. Lze instalovat Apache Kafka i na jiné distribuce Ubuntu?

Ano, tento návod je konkrétně pro Ubuntu 20.04, ale obecný princip je podobný i u jiných verzí. Pro vaše konkrétní Ubuntu si ověřte specifika v dokumentaci.

2. Jaké další konfigurace lze nalézt v server.properties?

Soubor server.properties má mnoho konfigurací. Podrobnosti naleznete v dokumentaci Apache Kafka.

3. Je možné používat Apache Kafka na operačním systému Windows?

Ano, Kafka je spustitelná i ve Windows. Návod naleznete v dokumentaci pro rychlý start.

4. Jak monitorovat Kafka cluster?

Pro monitorování je doporučen nástroj Kafka Manager dokumentace Kafka Manager.

5. Kde najít podporu pro Apache Kafka?

Podporu naleznete na komunitních fórech Apache Kafka.

6. Lze Apache Kafka využít pro zpracování událostí JSON?

Ano, Kafka podporuje zpracování JSON skrze schémata avro nebo přímo JSON formát.

7. Jak lze škálovat Kafka cluster?

Přidáním dalších brokerů do clusteru a konfigurací replikací.

8. Je Kafka vhodná pro zpracování streamovaných dat?

Ano, díky své nízké latenci a vysoké propustnosti je Kafka pro streamovaná data velmi vhodná.

9. Existují alternativy k Apache Kafka?

Ano, mezi ně patří například Apache Pulsar, RabbitMQ a další.