Главная страница

Apache Kafka. Потоковая обработка и анализ данных. Apache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly


Скачать 7.59 Mb.
НазваниеApache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
Дата21.06.2022
Размер7.59 Mb.
Формат файлаpdf
Имя файлаApache Kafka. Потоковая обработка и анализ данных.pdf
ТипДокументы
#609074
страница35 из 39
1   ...   31   32   33   34   35   36   37   38   39
277
(
https://github.com/linkedin/kafka-monitor
)..Эта.утилита.с.открытым.исходным.кодом,.
созданная.командой.разработчиков.Kafka.компании.LinkedIn,.непрерывно.гене- рирует.и.потребляет.данные.из.темы,.распределенной.по.всем.брокерам.кластера..
Она.оценивает.доступность.каждого.из.брокеров.для.запросов.как.на.потребление,.
так.и.на.генерацию,.а.также.общую.сквозную.задержку..Ценность.такого.мони- торинга.очень.высока,.поскольку.он.способен.подтвердить,.что.кластер.Kafka.
работает.должным.образом,.ведь,.как.и.в.случае.мониторинга.отставания.потреби- теля,.брокер.Kafka.не.может.дать.ответ.на.вопрос,.есть.ли.у.клиентов.возможность.
использовать.кластер.так,.как.предполагается.
Резюме
Мониторинг.—.ключевой.аспект.правильной.эксплуатации.кластера.Kafka..Именно.
поэтому.многие.команды.разработчиков.тратят.значительную.долю.времени.на.
отладку.этой.функциональности..Во.многих.компаниях.Kafka.используется.для.
работы.с.петабайтными.потоками.данных..Одно.из.важнейших.бизнес-требова- ний.—.поток.данных.не.должен.прерываться,.а.сообщения.не.должны.теряться..
Мы.должны.также.помогать.пользователям.с.мониторингом.использования.Kafka.
их.приложениями,.обеспечивая.необходимые.для.этого.показатели.
В.этой.главе.мы.рассмотрели.основы.мониторинга.Java-приложений,.а.именно.
приложений.Kafka..Изучили.небольшую.часть.многочисленных.показателей,.до- ступных.в.брокерах.Kafka,.коснулись.вопросов.мониторинга.Java.и.операционной.
системы,.а.также.журналирования..Далее.мы.подробно.обсудили.возможности.
мониторинга,.имеющиеся.у.клиентских.библиотек.Kafka,.включая.мониторинг.
квот..Наконец,.обсудили.использование.внешних.систем.мониторинга.с.целью.от- слеживания.отставания.потребителей.и.сквозной.доступности.кластера..Эта.глава.
хоть.и.не.претендует.на.звание.исчерпывающего.списка.доступных.показателей,.
но.охватывает.наиболее.важные.из.них,.требующие.постоянного.отслеживания.

11
Потоковая обработка
Kafka.традиционно.рассматривают.как.мощную.шину.сообщений,.которая.может.
доставлять.потоки.событий,.но.не.имеет.возможности.обработать.или.преобра- зовать.их..Надежность.потоковой.доставки.делает.Kafka.идеальным.источником.
данных.для.систем.потоковой.обработки..Apache.Storm,.Apache.Spark.Streaming,.
Apache.Flink,.Apache.Samza.и.многие.другие.системы.потоковой.обработки.за- частую.проектируются.в.расчете.на.Kafka.в.качестве.единственного.надежного.
источника.данных.
Специалисты-аналитики.в.данной.сфере.иногда.утверждают,.что.все.эти.системы.
потоковой.обработки.по.сути.аналогичны.сложным.системам.обработки.событий.
(CEP),.существующим.уже.около.20.лет..Нам.представляется,.что.популярность.
потоковой.обработки.растет.потому,.что.она.появилась.после.Kafka,.а.значит,.есть.
возможность.использовать.Kafka.в.качестве.надежного.источника.потоков.событий..
По.мере.роста.популярности.Kafka.сначала.в.качестве.простой.шины.сообщений,.
а.потом.системы.интеграции.данных.во.многих.компаниях.начали.появляться.си- стемы,.содержащие.множество.потоков.интересных.данных,.хранимых.в.течение.
длительных.промежутков.времени.и.прекрасно.упорядоченных,.которые.только.
и.ждут,.когда.появится.какой-нибудь.потоковый.фреймворк.для.их.обработки..
Другими.словами,.аналогично.тому,.как.до.изобретения.баз.данных.обработка.
данных.была.гораздо.более.сложной.задачей,.потоковую.обработку.сдерживало.
отсутствие.соответствующей.платформы.
Начиная.с.версии.0.10.0.Kafka.не.просто.обеспечивает.надежный.источник.потоков.
данных.для.практически.любого.популярного.фреймворка.потоковой.обработки..
Теперь.она.включает.в.свой.набор.клиентских.библиотек.мощную.библиотеку.
потоковой.обработки..Благодаря.этому.разработчики.могут.потреблять,.обраба- тывать.и.генерировать.события.в.своих.приложениях.и.им.не.нужно.использовать.
внешний.фреймворк.для.обработки.
Начнем.эту.главу.с.объяснения.того,.что.мы.понимаем.под.потоковой.обработкой,.
поскольку.этот.термин.часто.понимают.неправильно,.затем.обсудим.некоторые.
основные.понятия.потоковой.обработки.и.паттерны.проектирования,.общие.для.
всех.систем.потоковой.обработки..Затем.займемся.библиотекой.потоковой.обра-

Что такое потоковая обработка 279
ботки.Apache.Kafka.—.ее.задачами.и.архитектурой..Мы.покажем.небольшой.пример.
использования.библиотеки.Kafka.Streams.для.подсчета.скользящего.среднего.цен.
акций..Затем.обсудим.другие.примеры.удачных.сценариев.применения.потоковой.
обработки.и.завершим.главу.небольшим.перечнем.критериев.выбора.фреймворка.
потоковой.обработки.для.использования.совместно.с.Apache.Kafka..Эта.глава.за- думана.как.краткое.введение.в.потоковую.обработку.и.не.охватывает.всех.возмож- ностей.Kafka.Streams,.равно.как.в.ней.не.делается.попытка.обсудить.и.сравнить.
все.существующие.фреймворки.потоковой.обработки.—.эти.темы.заслуживают.
отдельной.книги,.а.может,.и.нескольких.
Что такое потоковая обработка
Вокруг.термина.«потоковая.обработка».существует.большая.путаница..Во.многих.
определениях.смешаны.в.кучу.детали.реализации,.требования.к.производитель- ности,.модели.данных.и.многие.другие.аспекты.инженерии.разработки.ПО..Я.уже.
сталкивался.с.подобным.в.сфере.реляционных.баз.данных.—.абстрактные.опреде- ления.реляционной.модели.вечно.теряются.в.деталях.реализации.и.конкретных.
ограничениях.распространенных.движков.баз.данных.
Мир.потоковой.обработки.активно.развивается,.и.детали.функционирования.или.
конкретные.ограничения.какой-либо.популярной.реализации.не.означают,.что.эти.
особенности.являются.неотъемлемой.частью.обработки.потоков.данных.
Начнем.с.начала:.что.такое.поток.данных.(data.stream),.называемый.также.потоком
событий.(event.stream).или.потоковыми данными.(streaming.data)?.Прежде.всего.
поток данных.—.это.абстрактное.представление.неограниченного.набора.данных..
Неограниченность.(unbounded.stream).означает.его.потенциально.бесконечный.
размер.и.непрерывный.рост..Набор.данных.является.неограниченным,.потому.что.
с.течением.времени.в.него.продолжают.поступать.все.новые.записи..Это.определение.
применяется.компаниями.Google,.Amazon,.да.и.практически.всеми.остальными.
Обратите.внимание.на.то,.что.эту.простую.модель.(поток.событий).можно.ис- пользовать.для.представления.практически.любой.бизнес-операции,.которую.
только.имеет.смысл.анализировать..Это.может.быть.поток.транзакций.платежных.
карт,.операций.на.фондовой.бирже,.доставки.почты,.проходящей.через.сетевой.
коммутатор.событий.сети,.событий.от.датчиков.в.промышленном.оборудовании,.
отправленных.сообщений.электронной.почты,.шагов.в.игре.и.т..п..Список.приме- ров.бесконечен,.поскольку.практически.все.что.угодно.можно.рассматривать.как.
последовательность.событий.
Вот.еще.несколько.характерных.черт.модели.потоков.событий.в.дополнение.к.их.
неограниченности.
‰
‰
Упорядоченность потоков событий. Неотъемлемой.частью.потоков.событий.
является.информация.о.том,.какие.события.произошли.раньше,.а.какие.—.позже.
других..Наиболее.ясно.это.в.случае.финансовых.событий..Последовательность.

280 Глава 11 • Потоковая обработка событий,.при.которой.я.сначала.кладу.деньги.на.счет.в.банке,.а.затем.их.трачу,.
сильно.отличается.от.последовательности,.при.которой.я.сначала.трачу.день- ги,.а.затем.гашу.долг.путем.помещения.денег.на.счет..Второй.вариант.влечет.
за.собой.необходимость.уплаты.комиссионного.сбора.за.перерасход.средств,.
а.первый.—.нет..Отметим,.что.в.этом.состоит.одно.из.различий.между.потоком.
событий.и.таблицей.базы.данных:.записи.в.таблице.всегда.рассматриваются.как.
неупорядоченные,.а.предложение.order.by.оператора.SQL.не.является.частью.
реляционной.модели,.оно.было.добавлено.для.упрощения.создания.отчетности.
‰
‰
Неизменяемость записей данных. Уже.произошедшие.события.не.могут.ме- няться..Отмененная.финансовая.транзакция.не.исчезает..Вместо.этого.в.поток.
записывается.дополнительное.событие,.фиксирующее.отмену.предыдущей.
транзакции..При.возврате.покупателем.товаров.в.магазин.мы.не.удаляем.факт.
продажи.ему.товаров,.а.записываем.возврат.в.виде.дополнительного.события..
Между.потоком.данных.и.таблицей.базы.данных.есть.и.еще.одно.различие:.мы.
можем.удалять.или.модифицировать.записи.в.таблице,.но.эти.изменения.пред- ставляют.собой.дополнительные.транзакции.базы.данных,.которые.требуют.
записи.в.потоке.событий,.фиксирующем.выполнение.всех.транзакций..Если.
вы.знакомы.с.такими.понятиями,.как.двоичные.журналы,.журналы.упреждаю- щей.записи.(write-ahead.log,.WAL).или.журналы.повтора.(redo.log),.то.знаете,.
что.если.вставить.запись.в.таблицу,.а.затем.удалить.ее,.в.таблице.больше.этой.
записи.не.будет,.зато.в.журнале.повтора.будут.содержаться.две.транзакции.—.
вставки.и.удаления.
‰
‰
Повторяемость потоков событий. Это.свойство.желательно,.но.не.обязательно..
Хотя.можно.легко.представить.себе.неповторяющиеся.потоки.событий.(потоки.
TCP-пакетов,.проходящих.через.сокет,.обычно.не.повторяются),.для.большин- ства.бизнес-приложений.критически.важно.иметь.возможность.повтора.необ- работанного.потока.событий,.произошедших.месяцы.или.даже.годы.тому.назад..
Это.необходимо.для.исправления.ошибок,.экспериментов.с.новыми.методами.
анализа.и.выполнения.аудита..Kafka.настолько.усовершенствовала.потоковую.
обработку.в.современных.условиях.именно.потому,.что.обеспечивает.возмож- ность.захвата.и.повтора.потока.событий..Без.этого.потоковая.обработка.была.бы.
не.более.чем.лабораторной.игрушкой.для.исследователей.данных.
Следует.отметить,.что.ни.в.определении.потока.событий,.ни.в.атрибутах,.которые.
мы.перечислим.далее,.ничего.не.говорится.ни.о.содержащихся.в.событиях.данных,.
ни.о.числе.событий.в.секунду..В.разных.системах.данные.различаются.—.события.
могут.быть.крошечными.(иногда.всего.лишь.несколько.байтов).или.огромными.
(XML-сообщения.со.множеством.заголовков),.они.могут.быть.полностью.не.струк- турированными,.парами.«ключ/значение»,.полуструктурированным.JSON.или.
структурированными.сообщениями.Avro.или.Protobuf..Хотя.потоки.данных.часто.
по.умолчанию.считаются.большими.данными,.включающими.миллионы.событий.
в.секунду,.обсуждаемые.нами.методики.так.же.успешно,.а.иногда.и.еще.лучше.по- дойдут.для.меньших.потоков.событий.—.с.несколькими.событиями.в.секунду.или.
даже.в.минуту.

Что такое потоковая обработка 281
Теперь,.когда.мы.разобрались,.что.такое.потоки.событий,.самое.время.поговорить.
о.потоковой.обработке..Потоковая.обработка.означает.непрерывную.обработку.
одного.или.более.потоков.событий..Потоковая.обработка.—.парадигма.программи- рования.как.и.парадигма.«запрос/ответ».и.пакетная.обработка..Сравним.различные.
парадигмы.программирования,.чтобы.лучше.понять.место.потоковой.обработки.
в.архитектурах.программного.обеспечения.
‰
‰
Запрос/ответ. Это.парадигма.с.минимальной.задержкой,.при.которой.время.
ответа.колеблется.от.субмиллисекунд.до.нескольких.миллисекунд,.причем.
обычно.ожидается,.что.время.ответа.всегда.практически.одинаковое..Обработка.
в.большинстве.случаев.происходит.с.блокировкой.—.приложение.отправляет.
запрос,.после.чего.ждет.ответа.от.системы.обработки..В.базах.данных.эта.пара- дигма.известна.под.названием.обработки транзакций в режиме реального време-
ни.(online.transaction.processing,.OLTP)..POS-системы,.обработка.платежей.по.
кредитным.картам.и.системы.учета.рабочего.времени.обычно.придерживаются.
этой.парадигмы.
‰
‰
Пакетная обработка. Этот.вариант.отличается.длительной.задержкой.и.вы- сокой.пропускной.способностью..Система.обработки.активируется.в.задан- ное.время,.например.в.02:00.каждый.день.или.каждый.час,.и.читает.нужные.
входные.данные.(все.появившиеся.после.прошлого.выполнения.данные,.все.
данные.с.начала.месяца.и.т..д.),.записывает.все.требуемые.результаты.и.пре- кращает.работу.до.следующего.запланированного.времени.запуска..Длитель- ность.обработки.варьируется.от.минут.до.часов,.и.пользователи.готовы.к.тому,.
что.результаты.могут.оказаться.устаревшими..В.мире.баз.данных.существуют.
хранилища.данных.и.системы.бизнес-аналитики,.в.которые.один.раз.в.день.
громадными.пакетами.загружаются.данные,.генерируются.отчеты,.и.пользо- ватели.видят.одни.и.те.же.отчеты.до.момента.следующей.загрузки.данных..
Эта.парадигма.отличается.высокой.эффективностью.и.экономичностью,.но.
в.последние.годы.для.повышения.своевременности.и.эффективности.приня- тия.решений.в.коммерческой.деятельности.данные.требуются.в.более.сжатые.
сроки..Это.сильно.затрудняет.работу.систем,.написанных.в.расчете.на.эконо- мичность.обработки.больших.объемов.данных,.а.не.на.получение.отчетности.
практически.без.задержки.
‰
‰
Потоковая обработка. Этот.вариант.отличается.непрерывной.обработкой.без.
блокировки..Он.заполняет.пробел.между.вселенной.«запрос/ответ»,.где.при- ходится.ждать.событий,.а.обработка.занимает.всего.2.мс,.и.вселенной.пакетной.
обработки,.где.обработка.данных.производится.раз.в.день.и.занимает.8.часов..
Большинство.бизнес-процессов.не.требуют.немедленного.ответа.в.течение.не- скольких.миллисекунд,.но.в.то.же.время.не.могут.ждать.до.следующего.дня..
Большинство.бизнес-процессов.происходит.непрерывно,.и.обработка.может.
продолжаться,.не.ожидая.конкретного.ответа.в.течение.нескольких.миллисе- кунд,.до.тех.пор,.пока.бизнес-отчеты.обновляются.непрерывно.и.линейка.биз- нес-приложений.может.реагировать.непрерывно..Такие.бизнес-процессы,.как.
оповещение.о.подозрительных.кредитных.транзакциях.или.сетевых.операциях,.

282 Глава 11 • Потоковая обработка тонкая.подстройка.цен.на.основе.спроса.и.предложения.или.отслеживание.по- чтовой.доставки,.естественным.образом.подходят.для.непрерывной.обработки.
без.блокировок.
Важно.отметить,.что.это.определение.не.навязывает.нам.конкретного.фреймворка,.
API.или.каких-либо.функциональных.возможностей..Раз.вы.непрерывно.читаете.
данные.из.неограниченного.набора.данных,.что-то.с.ними.делаете.и.выводите.
результаты,.значит,.вы.выполняете.потоковую.обработку..Но.обработка.должна.
быть.непрерывной.и.постоянной..Запускаемый.ежедневно.в.2.часа.ночи.процесс,.
который.читает.500.записей.из.потока,.выводит.результат.и.завершает.работу,.под.
определение.потоковой.обработки.не.подходит.
Основные понятия потоковой обработки
Потоковая.обработка.очень.похожа.на.остальные.виды.обработки.данных:.пишется.
код,.который.получает.данные,.делает.с.ними.что-либо.—.несколько.преобразова- ний,.группировок.и.т..д..—.и.выводит.куда-то.результаты..Однако.есть.несколько.
специфичных.для.потоковой.обработки.понятий,.часто.сбивающих.с.толку.тех,.кто.
на.основе.своего.опыта.обработки.данных.из.других.сфер.пытается.писать.прило- жения.потоковой.обработки..Рассмотрим.некоторые.из.них.
Время
Время.—.вероятно,.важнейшее.из.понятий.потоковой.обработки,.а.заодно.и.наибо- лее.запутанное..Если.вы.хотите.получить.представление.о.том,.насколько.сложным.
может.быть.время.в.сфере.распределенных.систем,.рекомендуем.заглянуть.в.пре- восходную.статью.Джастина.Шийи.(Justin.Sheehy).«Настоящего.не.существует».
(There.is.No.Now).(
http://www.bit.ly/2rXXdLr
)..В.контексте.потоковой.обработки.единое.
представление.о.времени.критически.важно,.поскольку.большинство.потоковых.
приложений.выполняют.операции.в.соответствии.с.временными.окнами..Например,.
потоковое.приложение.может.вычислять.скользящее.пятиминутное.среднее.цен.на.
акции..В.этом.случае.нужно.знать,.что.делать,.если.один.из.производителей.отклю- чается.на.два.часа.из-за.проблем.с.сетью.и.возвращается.в.строй.с.данными.за.два.
часа,.в.основном.относящимися.к.тем.пятиминутным.временным.окнам,.которые.
давным-давно.прошли.и.для.которых.результаты.уже.подсчитаны.и.сохранены.
Системы.потоковой.обработки.обычно.используют.следующие.виды.времени.
‰
‰
Время события. Момент.времени,.когда.произошло.отслеживаемое.событие.
и.создана.запись,.—.время,.когда.был.измерен.показатель,.продан.товар.в.ма- газине,.пользователь.открыл.страницу.сайта.и.т..д..В.версиях.0.10.0.и.более.
поздних.Kafka.при.создании.в.записи.производителя.автоматически.добавляет.
текущее.время..Если.это.не.соответствует.представлению.вашего.приложения.
о.времени события,.например,.при.создании.записей.Kafka.на.основе.записи.

Основные понятия потоковой обработки 283
базы.данных.через.какое-либо.время.после.фактического.события,.желательно.
добавить.время.события.в.виде.поля.самой.записи..При.обработке.потоковых.
данных.основное.значение.имеет.именно.время.события.
‰
‰
Время добавления информации в журнал. Время.поступления.события.в.брокер.
Kafka.и.сохранения.его.там..В.версиях.0.10.0.и.более.поздних.брокеры.Kafka.
автоматически.добавляют.это.время.в.получаемые.записи,.если.Kafka.настроена.
соответствующим.образом.или.если.записи.поступили.от.производителей.более.
старых.версий.и.не.содержат.меток.даты/времени..В.потоковой.обработке.такое.
понимание.времени.обычно.не.используется,.поскольку.при.этом.нас.обычно.
интересует.момент,.когда.произошло.событие..Например,.при.подсчете.числа.
произведенных.за.день.устройств.нас.интересует.число.устройств,.которые.
действительно.были.произведены.в.соответствующий.день,.даже.если.из-за.
проблем.с.сетью.событие.поступило.в.Kafka.только.на.следующий.день..Однако.
в.случаях,.когда.настоящее.время.события.не.было.зафиксировано,.можно.без.
потери.согласованности.воспользоваться.временем.добавления.информации.
в.журнал,.поскольку.оно.не.меняется.после.создания.записи.
‰
‰
Время обработки. Это.момент.времени,.в.который.приложение.потоковой.обра- ботки.получило.событие.для.выполнения.каких-либо.вычислений..Этот.момент.
может.отстоять.на.миллисекунды,.часы.или.дни.от.того.момента,.когда.произошло.
событие..При.этом.представлении.о.времени.одному.и.тому.же.событию.присва- иваются.различные.метки.даты/времени.в.зависимости.от.момента.прочтения.
этого.события.каждым.приложением.потоковой.обработки..Оно.может.разли- чаться.даже.для.двух.потоков.выполнения.одного.приложения!.Следовательно,.
такое.представление.времени.крайне.ненадежно.и.лучше.его.избегать.
1   ...   31   32   33   34   35   36   37   38   39


написать администратору сайта