Обратное давление в Apache NiFi

Apache NiFi примеры курсы обучение backpressure обратное давление, обучение дата-инженеров, инженер данных NiFI примеры курсы обучение, Школа Больших Данных Учебный Центр Коммерсант

Чтобы сделать наши курсы для дата-инженеров по Apache NiFi еще более полезными, сегодня мы рассмотрим, что такое обратное давление и как этот механизм используется при потоковой обработке данных. Также поговорим про визуализацию back pressure в GUI, математические модели прогнозирования пороговых значения и настройку конфигураций.

Что такое обратное давление в потоковой обработке данных

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

Возникновение обратного давления в NiFi является явным индикатором проблемы с производительностью. Дата-инженеру или администратору потока данных следует предотвратить возникновение обратного давления или определить, достигает ли очередь его порогового значения. До выпуска NiFi 1.10 чтобы отслеживать тенденции роста очереди в течение длительного периода времени требовалось извлекать метрики из NiFi и отправлять их во внешние инструменты мониторинга. Но с версии 1.11 включена новая аналитическая структура, обеспечивающая тенденции и возможности прогнозирования в NiFi для получения информации о ключевых показателях производительности, таких как возникновение обратного давления.

Эксплуатация Apache NIFI

Код курса
NIFI3
Ближайшая дата курса
20 января, 2025
Продолжительность
24 ак.часов
Стоимость обучения
72 000 руб.

Для настройки обратного давления NiFi предоставляет два элемента конфигурации – пороговые значения, которые указывают, какой объем данных должен находиться в очереди, прежде чем компонент, являющийся источником соединения, больше не будет выполняться по расписанию. Это позволяет системе избежать переполнения данными. Рассмотрим эти конфигурации более подробно:

  • Порог объекта обратного давления (Back pressure object threshold) – количество файлов FlowFile, которые могут находиться в очереди до того, как будет применено обратное давление. По умолчанию этот порог равен 10 000.
  • Порог размера данных обратного давления (Back pressure data size threshold) – максимальный объем данных (по размеру), которые должны быть поставлены в очередь перед применением обратного давления. Это значение настраивается путем ввода числа, за которым следует размер данных: B для байтов, KB для килобайтов, MB для мегабайтов, GB для гигабайтов или TB для терабайтов. По умолчанию этот порог равен 1 ГБ.

Значения по умолчанию можно изменить, изменив соответствующие свойства в файле nifi.properties. Когда обратное давление включено, на метке отношения в GUI появляются небольшие индикаторы выполнения, что видно при просмотре потока на холсте. Индикаторы выполнения меняют цвет в зависимости от процента очереди: зеленый (0-60%), желтый (61-85%) и красный (86-100%). Также  в пользовательском интерфейсе NiFi выводятся всплывающие подсказки, которые предоставляют прогнозы размеров очереди в следующем настроенном временном интервале и оценки того, когда возникнет обратное давление на основе текущих тенденций.

Apache NiFi примеры курсы обучение backpressure обратное давление
Обратное давление в веб-интерфейсе NiFi

Если надо интегрировать информацию об этих прогнозах в другие инструменты или приложения, для соединений доступна новая конечная точка статистики, которая предоставляет подробную информацию о каждом прогнозе. По умолчанию аналитика отключена, но ее можно включить, установив для параметра nifi.analytics.predict.enabled значение true в файле nifi.properties. Что интересного и полезного в этой аналитике, а также как ее настроить рассмотрим далее.

Прогнозирование обратного давления

NiFi использует внутреннюю инфраструктуру аналитики, чтобы запрашивать в репозитории состояния компонентов метрики для каждого соединения, обучать свою аналитическую модель и использовать ее для создания прогнозов. По умолчанию используется простая модель линейной регрессии, однако ее можно усложнить по необходимости. В файле свойств nifi.properties есть несколько настроек, позволяющих включать и контролировать создание прогнозов для соединений:

  • analytics.predict.enabled – включает функцию аналитики (по умолчанию false);
  • analytics.predict.interval — временной интервал прогнозирования (по умолчанию 3 мин);
  • analytics.query.interval — интервал времени для запроса прошлых наблюдений (по умолчанию 5 минут, т.е. используется 5 минут прошлых наблюдений для обучения модели);
  • analytics.connection.model.implementation – реализация модели, используемая для прогнозов (по умолчанию — org.apache.nifi.controller.status.analytics.models.OrdinaryLeastSquares);
  • analytics.connection.model.score.name — имя типа оценки, которое следует использовать для оценки модели (по умолчанию r-Squared, типы оценок могут различаться в зависимости от модели);
  • analytics.connection.model.score.threshold — порог для значения оценки, где оценка модели должна быть выше заданного порога (по умолчанию 0,9)

Прогнозы отображаются только в том случае, если NiFi определяет, что модель работает достаточно хорошо, что определяется названием оценки модели и ее пороговыми свойствами. По умолчанию модели оцениваются с использованием значения r-Squared, которое измеряет, насколько хорошо модель работает по сравнению с простым вычислением среднего значения для прогноза. В случае r-Squared действительные пороговые значения оценки составляют от 0 (самая низкая производительность с высокой ошибкой) до 1 (самая высокая производительность с наименьшей ошибкой). Если NiFi сгенерирует модель с оценкой, превышающей пороговое значение, она будет отображать прогнозы. Иначе, если оценка не превышает порогового значения, прогнозы будут недоступны.

В настоящее время прогнозирование обратного давления имеет доступ к двум реализациям модели линейной регрессии  с использованием библиотеки commons math3:

  • OrdinaryLeastSquares — выполняет линейную регрессию на основе обычных наименьших квадратов, где линия регрессии соответствует наименьшему количеству ошибок между всеми наблюдениями и самой линией. Эта модель поддерживает несколько переменных (функций) для регрессии. В случае обратного давления он использует количество очередей/байт, количество входов/выходов/байты и время. Возможные оценки: rSquared и totalSumSquares.
  • SimpleRegression — выполняет линейную регрессию на основе обычных наименьших квадратов, где линия регрессии соответствует наименьшему количеству ошибок между всеми наблюдениями и самой линией. Эта модель поддерживает только две переменные для прогнозирования. В случае обратного давления используется количество очередей/байт и время. Возможные оценки: rSquared, adjustedRSquared, residualSumSquares, meanSquaredError.

Эксплуатация Apache NIFI

Код курса
NIFI3
Ближайшая дата курса
20 января, 2025
Продолжительность
24 ак.часов
Стоимость обучения
72 000 руб.

В будущем NiFi предполагает поддержку дополнительных моделей, а также возможность вносить собственные модели прямо во фреймворке или через API. Прогнозы будут недоступны в определенных сценариях:

  • первоначальный запуск — в зависимости от того, как часто делаются снимки для репозитория состояния, по умолчанию для появления прогнозов может потребоваться от 2 до 3 минут, т.к. NiFi полагается на существование этих данных для обучения модели прогнозирования. Эта частота контролируется свойством components.status.snapshot.frequency в файле nifi.properties и может быть уменьшена, чтобы позволить большему количеству данных быть доступными раньше. Изменение этого значения также требует хранения большего количества данных, поэтому важно убедиться, что среда сможет справиться с любым уменьшением частоты моментальных снимков.
  • освобождение очередейпрогнозирующие запросы работают как скользящее окно, выполняя поиск данных за последние 5 минут по умолчанию при каждом вызове. По прошествии этого времени более старые наблюдения не возвращаются запросом, и используются только самые последние данные. Поэтому при ручной очистке очереди или ее быстрой очистке целевым процессором может потребоваться 2-3 минуты для очистки предыдущих прогнозов и получения новой информации для создания новой модели прогнозов. Скорость этого также определяется настройками частоты снимков, а также интервалом выполнения и запросом, что указывается в конфигурации analytics.query.interval.
  • часто изменяющиеся очереди – прогнозы могут стать недоступны в моделях по умолчанию, если размеры очередей резко увеличиваются и уменьшаются с течением времени в течение интервала запроса, прогнозы могут стать недоступными. Это происходит, когда модели типа OrdinaryLeastSquares, пытаются построить линейную регрессию на данных, которые не являются линейными по своей природе. Это приводит к более высокой ошибке между наблюдением и предсказанием, что означает уменьшение значения r-Squared.

Тем не менее, несмотря на эти ограничения, механизм обратного давления в Apache NiFi и его визуализация в GUI весьма полезны для дата-инженера и администратора Data Flow. Читайте в нашей новой статье про балансировку нагрузки в кластере NiFi.

Узнайте больше про администрирование и эксплуатацию Apache NiFi  для построения эффективных ETL-конвейеров потоковой аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://habr.com/ru/post/512724/
  2. http://lonnifi.blogspot.com/2019/11/back-pressure-prediction-deep-dive.html
  3. https://nifi.apache.org/docs/nifi-docs/html/user-guide.html#Backpressure

Поиск по сайту