Sysadmin
Today
Установка Kafka на Ubuntu Linux
Apache Kafka - это распределенная канальная платформа. Платформа каналов обладает такими возможностями:
- Публикация и подписка на каналы записей, что очень похоже на очередь сообщений
- Сохранение каналов записей в отказоустойчивом долгосрочном хранилище
- Обработка калаов записей сразу при их появлении
Kafka обычно используется для приложений:
- Построения конвейеров передачи данных в реальном времени между приложениями
- Построения потоковых приложений, преобразовывающих или реагирующих на потоки данных
- Kafka запускается, как кластер, выполняющийся на одном или нескольких серверах, расположенных, возможно, в нескольких дата-центрах
- Kafka сохраняет потоки записей в категориях, называемых "тема"
- Каждая запис состоит из ключа, значения и отметки времени
- Producer API - позволяет приложениям публиковать потоки записей в одну или несколько тем
- Consumer API - позволяет приложениям подписываться на темы и обрабатывать потоки записей, публикуемых в них
- Streams API - позволяет приложениям работать, как обработчик потоков, предполагая извлечение записей из входящего потока по одной или нескольким темам, и публикуя выходящий поток в одну или несколько тем, выполняя некоторое преобразование входящих потоков в исходящие потоки
- Connector API - позволяет строить и запускать переиспользуемых публикаторов и подписчиков, что соединяет темы Kafka с существующими приложениями. К примеру, коннектор к реляционной базе данных может отлавливать каждое изменение таблицы.
В Kafka коммуникация между клиентами и серверами выполняется на простом, высокопроизводительном языке по TCP протоколу. Протокол версионен и поддерживает обратную совместимость со старыми версиями. Существует множество клиентов для Kafka на различных языках, среди которых Go, Java, PHP, Python, Rust, Swift.
Установка Apache Kafka на Ubuntu Linux
apt install -y default-jre java -version
adduser kafka adduser kafka sudo su -l kafka
Установки Apache Kafka 3.1.0 со Scala 2.13
curl -fsSLO https://dlcdn.apache.org/kafka/3.1.0/kafka_2.13-3.1.0.tgz tar zxvf kafka_2.13-3.1.0.tgz mv kafka_2.13-3.1.0 ~/kafka cd ~/kafka #./bin/kafka-server-start.sh config/server.properties #./bin/zookeeper-server-start.sh config/zookeeper.properties
vi ~/kafka/config/server.properties # установить следующие значечния delete.topic.enable = true log.dirs=/home/kafka/logs
Настроить Systemd Unitssudo vi /etc/systemd/system/zookeeper.service
[Unit] Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple User=kafka ExecStart=/home/kafka/kafka/bin/zookeeper-server-start.sh /home/kafka/kafka/config/zookeeper.properties ExecStop=/home/kafka/kafka/bin/zookeeper-server-stop.sh Restart=on-abnormal [Install] WantedBy=multi-user.target
sudo vi /etc/systemd/system/kafka.service
[Unit] Requires=zookeeper.service After=zookeeper.service [Service] Type=simple User=kafka ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties > /home/kafka/kafka/kafka.log 2>&1' ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh Restart=on-abnormal [Install] WantedBy=multi-user.target
systemctl start zookeeper systemctl start kafka systemctl enable zookeeper systemctl enable kafka
# создать тему QUEUE #./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic QUEUE ./bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic QUEUE # создать публикатора для темы QUEUE, и написать несколько строк сообщений ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic QUEUE # показать список тем #./bin/kafka-topics.sh --list --zookeeper localhost:2181 ./bin/kafka-topics.sh --list --bootstrap-server localhost:9092 # создать подписчика на тему QUEUE и просмотреть сообщения ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic QUEUE --from-beginning
их соседнего терминала можно отправить сообщение в открытый с подписчиком
echo "Hello World!" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic QUEUE > /dev/null
Установка утилиты администрирования KafkaT
sudo apt install ruby ruby-dev build-essential sudo CFLAGS=-Wno-error=format-overflow gem install kafkat
{ "kafka_path": "~/kafka", "log_path": "/home/kafka/logs", "zk_path": "localhost:2181" }