Инструментарий специалиста по большим данным: Apache Kafka

Мы продолжаем серию статей об инструментарии специалиста по большим данным. На очереди Apache Kafka – распределенная система обмена сообщениями между компонентами программной системы, работающая по принципу «публикация-подписка». В этой статье мы рассмотрим основные принципы работы службы и ее компоненты, а также сравним ее характеристики с классическими службами обмена системными сообщениями.

Вряд ли стоит в очередной раз напоминать, насколько важное значение приобрели распределенные системы с появлением необходимости обработки и анализа больших данных. Однако для корректной работы распределенной системы необходимо, чтобы ее компоненты работали гармонично и слаженно – попытку создания такой системы (или, как ее принято называть в ИТ-кругах, экосистемы) предпринял и продолжает развивать фонд Apache.

Apache Kafka – один из важных компонентов этой экосистемы. Разработанная корпорацией LikedIn и названная в честь знаменитого писателя, служба обмена сообщениями Kafka обладает такими ценными качествами, как скорость работы, масштабируемость, способность секционировать и множество раз фиксировать одни и те же данные в памяти. Перечислим основные отличия Kafka от традиционных систем обмена сообщениями:

  • Служба Kafka изначально создавалась и позиционируется как распределенная программа – следовательно, она приспособлена к масштабированию.
  • Система обладает отличной производительностью – как в случае публикации сообщений, так и в случае подписки на них.
  • Kafka сохраняет сообщения на диске и, таким образом, может использоваться для пакетной передачи данных (например, для ETL-процессов (Extract, Transform, Load – «извлечение, трансформирование, загрузка»).

Попробуем подробнее разобраться, чем же так хороша служба Apache Kafka и почему именно ей стоит отдать предпочтение.

Архитектура Kafka

Для начала разберемся, из чего «сделана» Apache Kafka и рассмотрим основные компоненты ее архитектуры:

  • Поток сообщений (message) определенного типа в терминах службы называется темой (topic). Сообщение – это полезный для некоего процесса комплект данных, тогда как тема – это категория, в соответствии с которой публикуется то или иное сообщение.
  • Производитель (producer) – это любой процесс, публикующий сообщения в соответствующей теме.
  • Опубликованные сообщения затем отправляются на хранение на кластер серверов, именуемых брокерами (brokers) или кластером Kafka.
  • Потребитель (consumer) может подписаться на одну или несколько тем и использовать сообщения, забирая данные от брокеров.

1

Поскольку Kafka по своей природе является распределенной системой, кластер состоит из нескольких брокеров. Для удобства тема разбивается на секции, и каждый брокер отвечает за хранение одной или нескольких секций. Это дает возможность множеству производителей и потребителей публиковать и использовать сообщения для своих целей одновременно.

Преимущества Kafka

Какие преимущества дает подобная архитектура? Во-первых, объем потребляемых данных определяется не брокером, а потребителем. Брокер не обладает никакой информацией насчет того, принял ли потребитель сообщение или нет. Однако для Kafka это не проблема, а преимущество: сообщение удаляется автоматически, если оно задерживается у брокера дольше определенного времени. При этом потребитель может в любой момент сделать «повторный заказ» на то или иное сообщение.

Во-вторых, всем известна основная проблема распределенных систем: она заключается в невозможности определить в любой момент времени, какой сервер активен, а какой нет. Из этой проблемы вытекают более конкретные и пугающие – безопасность данных, отказы системы и прочие «слабые места» распределенных систем. В рамках Apache Hadoop решением подобных вопросов занимается служба координации ZooKeeper, которая обладает необходимыми «плюшками» вроде скорости работы, отказоустойчивости и – естественно – распределенной архитектуры. Так вот, поскольку Kafka, как и любая распределенная система, будет неизбежно сталкиваться с присущими этому классу проблемами, очень важно иметь под рукой интегрированный инструмент, который снизит риски и позаботится о вопросах безопасности и восстановления после отказов. В этом свете большим преимуществом Kafka является полная интеграция службы с ZooKeeper – симбиоз во всей красе.

Kafka – инновационная система для обработки больших объемов данных. Ее архитектура позволяет потребителям самим регулировать скорость, с которой они будут получать данные. При этом, если возникнет отказ системы или исключительная ситуация, потребитель всегда имеет возможность получить сообщение повторно. Интеграция с ZooKeeper позволяет системе работать не только быстро и слаженно, но безопасно, что особенно важно в случае больших данных – ведь большие данные сопряжены с большими рисками.

Автор: Елизавета Филиппова

Добавить комментарий

Ваш e-mail не будет опубликован.

закрыть

Поделиться

Отправить на почту
закрыть

Вход

закрыть

Регистрация

+ =