Как Apache Kafka работает с разными файлами Big Data: зачем нужен Schema Registry

Kafka, Big Data, Большие данные, архитектура, обработка данных

Продолжая серию публикаций про основы Apache Kafka для начинающих, в этой статье мы рассмотрим, зачем этой распределенной системе управления сообщениями нужен реестр схем данных (Schema Registry) и что такое сериализация файлов Big Data.

Что такое схемы данных в Big Data и как они используются

Понятие схемы неразрывно связано с форматом данных, который регламентирует структуру представления информации. Схема предписывает как обрабатывать тот или иной формат. Например, для обработки JSON-файлов используются схемы данных, отличные от схем для работы с изображениями PNG, GIF и прочих графических форматов. Любые файлы, в т.ч. Big Data, хранятся и передаются по сети в виде неструктурированной последовательности двоичных символов – битов, упакованных в байты. Перевод из формата – структуры, семантически понятной человеку, в двоичное представление для машинной обработки называется сериализацией [1]. Характер этой операции преобразования объекта в поток байтов для сохранения/передачи в память, базу данных или файл определяется схемой данных [2].

Сериализация
Типовая схема сериализации

Файлы Big Data характеризуются большим объемом и разнообразием форматов, поэтому для их программной обработки, например, извлечения конкретных данных в рамках SQL-подобного запроса, активно используются различные схемы. В Apache Kafka механизм работы с разными схемами данных реализован специальным компонентом – реестром схем (Schema Registry).

Благодаря этому схемы данных в Apache Kafka реализуют следующие действия [3]:

  • позволяют отправителям (producer) и потребителям (consumer) сообщений определить поля, необходимые для описания события, а также идентифицировать тип каждого поля;
  • документируют события и значение каждого его поля в виде, понятном человеку (т.е. не бинарном представлении);
  • предотвращают получение искаженных данных потребителями, поскольку в топик (topic) попадут только те сообщения, которые соответствуют схеме;
  • делают возможной работу с различными форматами данных от разных источников информации.

Широко используемая на практике версия Apache Kafka от компании Confluent включает графический интерфейс реестра схем, который позволяет [4]:

  • визуализировать схемы данных;
  • выполнять поиск по схемам;
  • регистрировать новую схему;
  • отображать команды работы со схемами.
Apache Kafka, Schema Registry
Запись сообщений в топик Apache Kafka с использованием Schema Registry

 

5 преимуществ использования схем данных в Apache Kafka

Учитывая специфику Apache Kafka, как наиболее популярного брокера потоковых сообщений среди Big Data систем, отметим следующие ключевые для нее плюсы схем данных [3]:

  1. независимость данных от приложений – отправители сообщений генерируют информационные потоки, а получатели сами обращаются к нужным данным согласно схеме;
  2. четкая регламентация вида представления информации – наличие единого инструментария для описания данных;
  3. семантическая ясность – смысловое назначение каждого поля, определенное в документации, позволяет избежать неверных интерпретаций в распределенной команде разработчиков;
  4. обеспечение совместимости при изменении структур и форматов данных, например, удалении или добавлении нового поля. Схема данных позволяет отслеживать модификации данных и объективно оценивать возможность обработки новых информационных структур с помощью уже существующего инструментария.
  5. Автоматизация процессов подготовки данных к моделированию (Data Preparation) – Благодаря наличию только действительных данных, соответствующих схеме, разработчику или, Data Scientist’у не приходится тратить время на ручную обработку информационного массива, например, выделяя поля с регулярным выражением из неправильно отформатированных данных CSV-файла со множеством запятых внутри самих значений типовых полей.

Вообще понятия сериализации, десериализации и схем данных применимы ко всей ИТ-области, а не только к Big Data. Однако, в связи с высокими требованиями к объему и скоростям обработки информации больших данных, существуют системы сериализации и схемы данных, разработанные специально для Big Data. Наиболее популярными среди них считаются Apache Avro и Apache Parquet [5], которые мы рассмотрим в следующей статье.

Сериализация, Big Data, Apache Kafka
Сериализация файлов Big Data в Apache Kafka

Вся специфика работы с Apache Кафка для начинающих и опытных пользователей рассматривается на практическом курсе Администрирование кластера Kafka в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов для руководителей, архитекторов, инженеров, аналитиков Big Data и Data Scientist’ов в Москве.

расписание компьютерные курсы для руководителей, аналитиков, программистов, администраторов и пользователей Internet of Things, Big Data и Machine Learning Смотреть расписание занятий
регистрация на компьютерные курсы для руководителей, аналитиков, программистов, администраторов и пользователей Internet of Things, Big Data и Machine Learning Зарегистрироваться на курс

 

Источники

  1. https://ru.wikipedia.org/wiki/Формат_файла
  2. https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/concepts/serialization/
  3. https://www.confluent.io/blog/avro-kafka-data/
  4. https://lenses.io/blog/2016/08/schema-registry-ui/
  5. http://datareview.info/article/test-proizvoditelnosti-apache-parquet-protiv-apache-avro/