Постоянно обновляя наши курсы по Apache Kafka, сегодня рассмотрим еще один полезный инструмент для администраторов, дата-инженеров и разработчиков, который повышает эффективность взаимодействия с этой распределенной платформой потоковой обработки событий. Что такое Saamsa, какие проблемы Kafka она решает и как ее использовать на практике.
5 вопросов разработчика и дата-инженера к Apache Kafka
Apache Kafka не случайно считается самым популярным решением для потоковой передачи событий с помощью упрощенной, но мощной и распределенной системы фиксации логов. Компоненты kSQLdb и Connect позволяют анализировать данные, подключаясь к различным источникам в реальном времени. Поэтому Apache Kafka так востребована сегодня в мире Big Data как самостоятельный продукт и основа для разработки множества подобных решений класс Event Streaming, о которых мы недавно рассказывали здесь и здесь.
Однако, при всех своих функциональных достоинствах, Kafka имеет ряд недостатков, которые затрудняют практическое использование этой платформы. Например, начинающим разработчикам и администраторам непростая архитектура системы может показаться черным ящиком. С одной стороны, все просто: данные приходят в систему и что-то происходит внутри брокера. Далее разработчику нужно присоединиться потребителя к брокеру для чтения сообщения и передать данные в конечный пункт назначения. Но под капотом этих этапов решается множество промежуточных вопросов, ответы на которые не всегда очевидны:
- какой потребитель из какой группы потребителей на самом деле читает сообщения?
- где именно сохраняются сообщения топика?
- как настраивается репликация для обеспечения надежности и целостности данных?
- есть ли простаивающие потребители, мешающие работе всей системы?
- есть ли потребители, нарушающие поток данных?
По умолчанию в Apache Kafka отсутствует встроенный инструмент ответа на эти важные вопросы. Поэтому дата-инженеры и разработчики распределенных приложений потоковой аналитики больших данных используют дополнительные средства мониторинга. Одним из них является Saamsa, которую мы рассмотрим далее.
Что такое Saamsa и как это работает
Saamsa (не путать с Apache Samza) – это легковесное десктопное и веб-приложение с открытым исходным кодом от сотрудников LinkedIn для работы с Kafka, которое:
- отображает нагрузку потребителей и продюсеров на отдельного брокера;
- позволяет разработчику видеть, какой потребитель какие данные потребляет, к каким группам они принадлежат и нужно ли исправить каких-либо потребителей по причине их простоя или устаревания;
- показывает, как данные хранятся по топикам, и что приводит к дисбалансу сообщений в отдельных разделах, если скорость передачи данных вызывает проблемы с обработкой пакетов;
- дает возможность разработчику заглянуть внутрь «черного ящика» Kafka и получить закулисную реализацию системы, чтобы оценить, все ли работает так, как ожидалось;
- визуализирует балансировку нагрузки на брокерах Kafka и позволяет при необходимости настраивать ее.
Таким образом, первая часть Saamsa – это наглядный графический интерфейс, который отображает нагрузку потребителей и продюсеров на отдельного брокера на уровне топика. Второй аспект Saamsa – это не просто визуализация обработки и хранения данных в Kafka. Здесь же обеспечивается однократная репликация с одноразовыми записанными фиксациями (commit) и непрерывная балансировка нагрузки в реальном времени по одному топику на одном и том же брокере. Это обеспечивает целостность данных и эффективные операции чтения/записи для максимальной производительности. Причем все это реализуется одним кликом, делая работу с Kafka максимально удобной для разработчиков и дата-инженеров. Эти функциональные возможности достигаются за счет специальной реализации API Kafka Streams, которая прикрепляется к конкретному топику. Так данные реплицируются в режиме реального времени с помощью независимого потребителя и продюсера в топик, обеспечивая отсутствие помех для других приложений Kafka.
Таким образом, некоторые идеи Saamsa похожи на FlowKat и Monokl — средства мониторинга за кластером Apache Kafka на базе KafkaJS, о которых мы писали здесь. Однако, интерфейс и функциональные возможности Saamsa намного проще, чем FlowKat и Monokl.
Для использования Saamsa с Apache Kafka необходим рабочий экземпляр брокера сообщений, а также приложения продюсера и потребителя, записывающие данные в топики и считывающие их оттуда. Далее следует установить десктопное приложении Saamsa или использовать веб-версию и выполнить следующие шаги:
- войти в приложение (авторизация для зарегистрированных пользователей и регистрация для новых)
- добавить новый URL-адрес брокера в поле ввода или использовать ранее заданные;
- выбрать топик, который необходимо просмотреть.
После этого Saamsa отобразит визуализацию заданного топика на выбранном брокере Kafka. Чтобы настроить балансировку нагрузки Apache Kafka с помощью Saamsa, следует сперва выбрать брокера и топик. После нажатия кнопки Balance Load on Topic, предложенный вариант балансировки нагрузки для исходного топика отобразится с добавлением «_balanced» к исходному имени, например, «topic_balanced».
Узнайте больше про администрирование и эксплуатацию Apache Kafka для разработки распределенных приложений потоковой аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники