Парадигма программирования потоков данных и ее отражение в Apache NiFi

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

Что такое программирование потоков данных и как ключевые идеи FBP-парадигмы обеспечивают высокую скорость и мощь Apache NiFi в потоковой обработке.

Что такое Flow-Based Programming

Каждый дата-инженер, работающий с Apache NiFi, знает, что этот фреймворк поддерживает потоковую обработку информации, понимая под потоком неограниченно поступающие данные. Однако, фундаментальные концепции NiFi основаны на ключевых идеях потоко-ориентированное программирование (FBP, Flow-Based Programming). Эта парадигма программирования имеет длительную историю (с конца 60-х годов XX века) и использует метафору фабрики обработки данных для проектирования и создания приложений. FBP определяет приложения как сети процессов черного ящика — компонентов, взаимодействующих друг с другом через фрагменты данных (информационные пакеты), которые перемещаются по заранее определенным соединениям. FBP — это особый случай программирования потоков данных, характеризующийся асинхронными, параллельными процессами «под обложкой», информационными пакетами с определенным временем жизни, именованными портами, соединениями с «ограниченным буфером» и их определением, внешних по отношению к компонентам.

С математической точки зрения FBP оперирует понятиями теории графов, представляя программу как ориентированный граф, в вершинах (узлах) которого выполняются единичные вычисления, т.е. входные данные преобразуются в выходные. Узлы посылают и принимают данные через порты — точки соединения дуг (рёбер графа) и узлов. На практике эта идея используется в нотациях функционально-событийного моделирования бизнес-процессов, например, BPMN.

Поток данных как направленный граф
Поток данных как направленный граф

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

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

Как FBP-парадигма отражена в Apache NiFi

Краткий ликбез по FBP-парадигме знакомит нас с термином информационный пакет, роль которого в Apache NiFi играет FlowFile – объект, который перемещается по конвейеру обработки данных и имеет набор атрибутов в виде пары ключ/значение, а также содержимое из нуля или более байтов.

В качестве черного ящика в NiFi выступает процессор (processor) – обработчик, который выполняет операции маршрутизации, преобразования или передачи данных между системами. Процессоры имеют доступ к атрибутам FlowFile и его потока содержимого, могут работать с одним или несколькими FlowFile в заданной единице работы, фиксируя ее или откатывая назад.

Соединение (connection) обеспечивает фактическую связь между процессорами, являясь очередью и позволяя различным процессам взаимодействовать с разной скоростью. Этим очередям можно динамически определять приоритеты и верхние границы нагрузки, обеспечивая обратное давление (backpressure). Каждое соединение содержит очередь FlowFile. Когда FlowFile передается в определенное соединение, он добавляется в очередь, принадлежащую связанному соединению.

Контроллер потока (Flow Controller) в NiFi соответствует понятию планировщика в FBP и хранит сведения о том, как процессы соединяются, а также управляет потоками и их распределением. По сути, он действует как брокер обмена информационными пакетами между процессорами.

А группа процессов (Process Group) в NiFi — это аналог подсети в FBP, которая объединяет набор процессов и их соединений, чтобы получать данные через входные порты и отправлять их через выходные. Так можно создавать совершенно новые компоненты путем объединения других.

Порты (port) тоже есть в Apache NiFi: они позволяет подключить потоки данных, созданные с использованием одной или нескольких групп процессов, к другим компонентам потока данных. Можно добавить любое количество входных и выходных портов в группу процессов и присвоить им соответствующие имена.

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

  • представление потоковых конвейеров в виде направленного ориентированного графа;
  • асинхронный характер, который обеспечивает очень высокую пропускную способность и естественную буферизацию даже при колебаниях скорости обработки данных и их поступления;
  • высокая степень параллелизма без ручного вмешательства разработчика;
  • модульная архитектура из связных и слабосвязанных компонентов, которые затем можно повторно использовать в других контекстах;
  • возможность ограничить ресурсы соединений позволяют избежать сбоев из-за разной скорости публикации и потребления данных;
  • упрощенная обработка ошибок благодаря точно известным точкам входа данных в систему и их выхода, а также отслеживаемости событий их происхождения с помощью репозитория Data Provinance, о котором мы писали здесь.

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

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

Источники

  1. https://nifi.apache.org/documentation/v2/
  2. https://jpaulm.github.io/fbp/
  3. https://habr.com/ru/articles/706500/
Поиск по сайту