Применение Apache Kafka для работы с большими данными
"Научный аспект №6-2024" - Информ. технологии
УДК 004.75
Мотькин Илья Дмитриевич – магистрант МИРЭА – Российского технологического университета
Аннотация: Данная статья посвящена использованию Apache Kafka, распределенной платформы для потоковой обработки данных, для работы с Big Data, что позволяет более эффективно обрабатывать, а также анализировать огромные объемы информации в режиме реального времени. В работе рассматриваются основные концепции и архитектура брокера сообщений Apache Kafka, а также его ключевые преимущества для работы с большими данными, описываются основные компоненты системы, такие как топики, разделы, репликация, подписчики и издатели. Особое внимание уделяется интеграции Apache Kafka с другими технологиями, используемых в экосистеме для работы с большими данными, такими как Apache Spark, Apache Flink и Hadoop.
Ключевые слова: большие данные, обработка данных, распределённые системы, брокер сообщений.
В современном мире объемы данных, которые необходимо обрабатывать и анализировать, растут экспоненциально, а сами данные стали одним из наиболее важных потоков для глобальной экономики. В настоящее время множество крупных корпораций и компаний записывают и хранят огромные объёмы данных о своих клиентах, поставщиках и различных операциях, а на промышленных предприятиях внедряются новейшие устройства интернета вещей, способные передавать полные данные о работе технологического оборудования. Подобные изменения объёмов и структуры данных и привели к появлению концепции больших данных, хранить и обрабатывать которые привычные средства уже не имеют возможности [1].
Крайне важным остаётся вопрос и об эффективной обработке, а также анализе данных, получаемых различными компаниями в результате их работы. Одним из примеров программного обеспечения, которое используется для потоковой обработки больших данных в режиме реального времени является платформа Apache Kafka, которая имеет открытый исходной код [2], и заявляющая своей главной целью создание высокопроизводительной системы хранения и обработки полученных данных с возможностью горизонтального масштабирования [3]. Ещё одной технологией, предоставляющей схожий функционал для работы с данными и их обработки является брокер RabbitMQ, который тоже поддерживает горизонтальное масштабирование, что позволяет строить кластерные решения [4]. Однако необходимо отметить, что платформа RabbitMQ предназначена для асинхронной передачи сообщений между различными компонентами распределенных систем, в отличие от Apache Kafka, больше ориентированной на хранение, а также обработку больших объемов данных.
Применение привычной модели взаимодействия «клиент — сервер» для элементов системы имеет определённые недостатки, связанные напрямую с масштабированием самой системы, из-за чего возникает достаточно сложная схема коммуникации и обмена данных между отдельными частями системы, что непосредственно приводит к усложнению как поддержки, так и обслуживанию существующей инфраструктуры системы. Таким образом, рост количества подсистем способствует только увеличению подобной сложности [5, с. 28].
Рисунок 1. Схема взаимодействия различных систем без использования брокера сообщений.
Apache Kafka представляет собой распределенную, масштабируемую и отказоустойчивую платформу для обработки потоковых данных в режиме реального времени. Она использует модель "издатель — подписчик" для надежного хранения и обработки данных, поступающих в виде сообщений.
Основным типом данных при работе с Apache Kafka является сообщение, представленное в виде массива байтов, поэтому данные, которые оно содержит, не имеют какого-либо определённого формата. Однако для более эффективной работы системы применяется запись пакетами, который включают в себя несколько сообщений, связанных с конкретной темой или же разделом. Благодаря объединению сообщений в единую структуру данных происходит и уменьшение расхода для вычислительных и сетевых ресурсов. Важным аспектом является и сжатие пакетов, что позволяет также повысить эффективность работы с ними [6, с. 36].
Ключевым элементом для Apache Kafka являются темы (топики), которые представляют собой каналы для связанных между собой данных и хранятся в кластере Kafka, поэтому вместо прямого взаимодействия между различными системами, издатели публикуют необходимые данные в виде сообщений в одной или же нескольких темах, а подписчики считывают используемые ими данные из выбранных топиков.
Необходимой частью Apache Kafka является и раздел, представленный в виде отдельного журнала, в который записываются новые сообщения, однако важность разделов состоит именно в вопросах масштабируемости, так как любой из них может быть размещен на отдельном сервере, а также они поддерживают функцию репликации, что позволяет хранить на различных серверах резервную копию для раздела [6, с. 37].
В большинстве программных сред для обработки больших данных используется не одно приложение, а целое множество, что позволяет работать с данными различного типа, каждый из которых имеет свои особенности и определённого рода отличия. При этом необходимо отметить, что платформа Apache Kafka выступает в роли соединительного элемента между различными частями системы, так как выполняет перенос данных в виде сообщений между участками программной инфраструктуры. Таким образом, экосистема данных включает в себя не только брокер сообщений, а множество инструментов, которые выполняют конкретные функции по обработке данных. На Рисунке 2 представлена схема, являющаяся одним из примеров структуры для системы обработки больших данных [6, c. 45]. Она включает в себя помимо платформы Apache Kafka некоторые средства для работы с данными из экосистемы Apache: Spark, Hadoop, Solr, Storm, Flink.
Рисунок 2. Пример структуры для системы обработки больших данных.
Apache Kafka легко интегрируется с другими популярными продуктами экосистемы Apache, что позволяет расширить возможности для обработки и анализа данных. Взаимодействие с Spark позволяет использовать возможности потоковой обработки данных в режиме реального времени, а связка Kafka и Hadoop обеспечивает эффективное хранение и обработку больших объемов данных. Kafka успешно интегрируется с Solr для полнотекстового поиска, Apache Storm и Apache Flink для сложной потоковой аналитики, это позволяет разработчикам при работе с Big Data использовать гибкие инструменты и создавать благодаря им комплексные распределенные системы для хранения и обработки больших данных.
Таким образом, платформа Apache Kafka предоставляет широкие возможности для работы с данными, в том числе и Big Data, благодаря её способности к масштабированию и работе в режиме реального времени. Она позволяет эффективно обрабатывать и передавать большие объемы данных между различными системами и приложениями, что делает ее популярным выбором для построения распределенных систем обработки данных.
Список литературы
- McKinsey Global Institute. Big data: The next frontier for innovation, competition, and productivity [Электронный ресурс]. — URL: https://www.mckinsey.com/capabilities/mckinsey-digital/our-insights/big-data-the-next-frontier-for-innovation (дата обращения06.2024)
- Mirror of Apache Kafka [Электронный ресурс]. — URL: https://github.com/apache/kafka (дата обращения 07.06.2024)
- Apache Kafka [Электронный ресурс]. — URL: https://kafka.apache.org/ (дата обращения 06.06.2024)
- RabbitMQ [Электронный ресурс]. — URL: https://www.rabbitmq.com/ (дата обращения 06.06.2024)
- Kafka Streams и ksqlDB: данные в реальном времени. / Г. Шапира, Т. Палино, Р. Сиварам, К. Петти — СПб.: Питер, 2023. — 432 с
- Apache Kafka. Потоковая обработка и анализ данных. / Т. Сеймур — СПб.: Питер, 2023. — 512 с.