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