
Лаба 6
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ
Ордена Трудового Красного Знамени
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра «Математическая кибернетика и информационные технологии»
Дисциплина «Большие данные»
Лабораторная работа №6
Москва, 2024
Содержание
1 Цель работы 3
2 Ход работы 3
3 Вывод 11
1 Цель работы
Получить навыки работы с Kafka.
2 Ход работы
Apache Kafka – распределенный программный брокер сообщений для организации очередей в целях отслеживания больших потоков входных данных.
1) Будем работать с Kafka через стандартные .sh-скрипты. Вообще есть куча способов подключения, например, через python.
Зайдём в директорию /usr/hdp/3.1.4.0-315/kafka. Эта директория присутствует только на kafka брокерах. В амбари посмотрим адреса брокеров и зайдём на любой из них
Рисунок 1 – Просмотр брокеров на kafka
Рисунок 2 – Просмотр брокеров на kafka
Рисунок 3 – Запуск Kafka
2) Посмотрим, какие топики уже созданы (будет по крайней мере топик test)
bin/kafka-topics.sh --list –zookeeper node2.mtuci.cloud.ru:2181,node1.mtuci.cloud.ru:2181,node3.mtuci.cloud.ru:2181
ZooKeeper — инструмент-координатор, действует как общая служба конфигурации в системе. Работает как база для хранения метаданных о состоянии узлов кластера и расположении сообщений.
Рисунок 4 – Список топиков
Рисунок 5 – Список топиков
3) Создайте свой топик. Пусть фактор репликации у нас будет равен 2, партиций будет 3
./bin/kafka-topics.sh --create –zookeeper node2.mtuci.cloud.ru:2181,node1.mtuci.cloud.ru:2181,node3.mtuci.cloud.ru:2181 --replication-factor 2 --partitions 3 --topic smirnov_bst-22-02
Topic - тема представляет собой категорию или канал, в который производитель отправляет сообщения. Она служит для организации и классификации потоков данных.
Рисунок 6 – Создание своего топика
4) Теперь что-нибудь запишем. Запустим producer Kafka: ./bin/kafka-console-producer.sh --topic smirnov_bst-22-02 --broker-list node4.mtuci.cloud.ru:6667,node5.mtuci.cloud.ru:6667,node6.mtuci.cloud.ru:6667
Producer - Производитель отвечает за генерацию и отправку сообщений в Kafka брокер. Он может выбирать topic, в который отправить сообщение, и при необходимости указывать ключ сообщения.
Broker - Брокеры представляют собой узлы в кластере Kafka, которые принимают, сохраняют и доставляют сообщения. Они выполняют функции хранения и репликации данных, обрабатывают запросы от производителей и потребителей, а также обеспечивают доступность и отказоустойчивость системы.
Рисунок 7 – Заполнение producer
5) Запустим Consumer в соседнем окне/вкладке. Считаем данные, которые записались в первую партицию за всё время существования топика:
./bin/kafka-console-consumer.sh --topic smirnov_bst-22-02 --bootstrap-server node4.mtuci.cloud.ru:6667,node5.mtuci.cloud.ru:6667,node6.mtuci.cloud.ru:6667 --from-beginning --partition 0
Consumer - Потребитель подписывается на одну или несколько тем и получает сообщения, отправленные в эти темы. Он может читать сообщения из разделов внутри темы и обрабатывать их согласно своей логики.
Рисунок 8 – Вывод consumer
6) Какие строчки записались в партицию 0?
3 строчка
7) Какой вывод можно сделать о стратегии распределения сообщений по умолчанию:
Round-robin
Key_hash%n
Explicit partition ?
Round-robin - сообщения равномерно распределяются между различными партициями. Каждое новое сообщение будет отправлено в следующую партицию по циклу.
Key_hash%n - сообщения отправляются в партиции на основе хеш-значения ключа сообщения. Каждый ключ хэшируется и определяет, в какую партицию будет отправлено сообщение.
Explicit partition - отправитель указывает, в какую конкретную партицию отправить сообщение. В этом случае отправитель явно указывает номер партиции, в которую нужно отправить сообщение.
8) Выполним команду bin/kafka-topics.sh --describe --zookeeper
node2.mtuci.cloud.ru:2181,node1.mtuci.cloud.ru:2181,node3.mtuci.cloud.ru:2181
Найдём свой топик. Какие выводы можно сделать о настройках nsync реплик? На каких хостах находятся лидер-реплики для каждой из созданных вами партиций?
Рисунок 9 – Описание топика
Какие выводы можно сделать о настройках nsync реплик? Ответ:
1. «partition»: Партиция топика, в которой данные разделены.
2. «Leader»: Брокер, который является «лидером» и отвечает за обслуживание чтения и записи в данной партиции.
3. «Replicas»: Список брокеров, на которых хранятся реплики данной партиции.
4. «Isr» (In-Sync Replica): Список брокеров, обслуживающих данную партицию, которые считаются «в синхронизированных репликах» и актуальны для чтения записей.
Лидер и воспроизведение важны для обеспечения отказоустойчивости и устойчивости брокера, а ISR используется для обеспечения непрерывной доступности данных.
На каких хостах находятся лидер-реплики для каждой из созданных вами партиций?
Партиция |
Лидер |
0 |
1001 |
1 |
1002 |
2 |
1003 |
9) Пометим топик на удаление
bin/kafka-topics.sh --delete --topic smirnov_bst-22-02 --zookeeper node2.mtuci.cloud.ru:2181,node1.mtuci.cloud.ru:2181,node3.mtuci.cloud.ru:2181
Рисунок 10 – Удаление топика
3 Вывод
Мы получили навыки работы с Kafka.